Xonsh (ausgesprochen wie „conch") ist eine vollwertige, plattformübergreifende Shell, deren Sprache eine Erweiterung von Python 3 ist. Shell-Befehle wie ls oder git status lassen sich direkt mit Python-Ausdrücken mischen — Variablen sind echte Python-Objekte, und die Umgebung ist ein Dictionary. Xonsh läuft auf Linux, macOS, Windows, Android und sogar im Jupyter-Notebook.

Erste Schritte

python -m pip install xonsh   # Installation
xonsh                         # interaktive Sitzung starten
xonsh --rc                    # mit Konfiguration (auch --login)

Die Startkonfiguration liegt in ~/.xonshrc und wird beim Start als Python-Code ausgeführt.

Sprache und Befehle

  • Python + Shell gemischt: for x in range(3): print(x) funktioniert direkt; genauso ls -l als Subprozess-Befehl.
  • Umgebung als Dictionary: $HOME ist ein Python-Objekt, env['PATH'] oder $PATH direkt veränderbar.
  • Interpolation: echo @(1+1) wertet Python aus und übergibt das Ergebnis an den Befehl; $() fängt Subprozess-Ausgabe als String, ![] führt einen reinen Python-Befehl ohne Subprozess aus.
  • Aliase: aliases['ll'] = 'ls -l' oder als Python-Funktionen, die echte Objekte übergeben.
  • Events statt Hooks: @events.on_chdir, @events.on_precommand und weitere Events ersetzen die Hook-Systeme anderer Shells.
  • xpip: ein Wrapper, der Python-Pakete in der richtigen Umgebung installiert (xpip install requests).
  • xontrib: Erweiterungen („contributions") wie xontrib-autojump, xontrib-prompt-bar oder xontrib-jupyter — aktiviert per xontrib load <name>.
  • History: history zeigt die Sitzungshistorie; zusätzlich gibt es Vorschläge (Suggestions) wie in Fish.
  • Fremde Umgebungen: foreign_env und superenv laden Umgebungen anderer Shells oder Konfigurationen nach.

Einsatzgebiet

Xonsh eignet sich besonders für Anwender, die ohnehin in Python denken: Datenverarbeitung, Globbing mit echten Python-Listen, komplexe Skripte ohne erneutes Erlernen einer Shell-Syntax. Nachteil: kein POSIX-kompatibles Skripting — reine Shell-Skripte bleiben in Bash oder Zsh.

Verwandte Grundlagen: Fish-Befehle, Zsh-Befehle und Python-Befehle.