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; genausols -lals Subprozess-Befehl. - Umgebung als Dictionary:
$HOMEist ein Python-Objekt,env['PATH']oder$PATHdirekt 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_precommandund 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") wiexontrib-autojump,xontrib-prompt-baroderxontrib-jupyter— aktiviert perxontrib load <name>.- History:
historyzeigt die Sitzungshistorie; zusätzlich gibt es Vorschläge (Suggestions) wie in Fish. - Fremde Umgebungen:
foreign_envundsuperenvladen 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.