Mit der Bash kenn' ich mich aus. Bin ja auch schon seit 1996 nahezu ausschließlich mit Linux unterwegs... da lernt man über die Jahre die Shell halt kennen ...
Dieser Artikel wurde erstmals am 20. Februar 2025 veröffentlicht.Mit der
Bash kenn' ich mich aus. Bin ja auch schon seit 1996 nahezu ausschließlich mit Linux unterwegs... da lernt man über die Jahre die Shell halt kennen.
Dann bin ich auf die
Fish-Shell gestoßen (
2016) und seit dem war sie die Shell meiner Wahl. Kürzlich habe ich dann einmal auf die
Nushell umgestellt, wobei ich damit irgendwie nicht warm geworden bin.
Elvish habe ich auch einmal ausprobiert, aber das war mir gar nix. Und irgendwann hatte ich dann auch mal einen Blick auf die
Xonsh-Shell geworfen.
Vor ein paar Tagen bin ich dann beim Surfen wieder über die Webseite von Xonsh gestolpert... und ich dachte mir: "
Wieso habe ich die eigentlich nicht länger ausprobiert? Mit der sollte ich doch gut klar kommen, denn Python gehört neben Golang und Pascal zu meinen bevorzugten Programmiersprachen, mit denen ich fit bin."
Also hab ich die Webseite des Projekts genauer angeschaut, intensiver gelesen und auch mal die Dokumentation studiert... und die Shell installiert.
Hey... nicht schlecht! Xonsh verhält sich erstmal ganz normal wie eine "übliche" Shell. Man merkt keinen wirklichen Unterschied. Und dann bietet sie, ohne irgendwas umzustellen oder extra Konfiguration, auch Python-Code auszuführen. Xonsh ist tatsächlich eine Art Python-Interpreter und gleichzeitig eine Shell, die sich zumindest nach
Posix "anfühlt".


Eine Sache, die mir wichtig ist, ist der mc-Wrapper. Das ist ein Shell-Script, das mit dem
MidnightCommander (mein bevorzugter Dateimanager) ausgeliefert wird, und dafür sorgt, dass man sich nach dem Verlassen des mc in dem letzten dort aktuell ausgewählten Verzeichnis befindet.

MidnightCommander liefert dieses Wrapper-Script für bash/sh und csh mit.
Schon für die Fish-Shell musste ich mir da ein eigenes Script basteln, weil die mitgelieferten, auch nach Anpassungen, nicht funktionieren wollten. War auch gar nicht so kompliziert.
Bei der Nushell musste ich aber wieder ein eigenes Script bauen, was schon etwas komplizierter wurde. Lag an der Philosophie von nu und den beschränkten Gültigkeitsbereichen für Variablen. Über die Community (via Discord) wurde ich dann aber in die richtige Richtung geschubst und konnte auch für nu das passende Script basteln.
Also... ran an den Speck und den Wrapper jetzt mal für Xonsh erstellen.
Boah war das simpel! Mit wirklich grundlegenden Python-Kenntnissen ließ es sich quasi aus dem Ärmel schütteln. Die
Dokumentation von Xonsh hat geholfen.
def m():
/usr/bin/mc -P ~/.temp/mcwd
with open('/home/derpepe/.temp/mcwd', 'r') as datei:
wdir = datei.read()
os.chdir(wdir)
os.remove('/home/derpepe/.temp/mcwd')
Dieses Script einfach in die Datei
~/.xonshrc
gepackt... und schon steht es dauerhaft zur Verfügung.
Leider muss man das Script wie eine Python-Funktion aufrufen, also mit den leeren Klammern hintendran. Nicht schön. Ruft man statt
m()
nur
m
auf, wird das Script nicht gefunden.
Aber auch kein Problem, denn Xonsh erlaubt es, Aliase zu erstellen (war eh geplant, damit ich den MidnightCommander, wie gewohnt mit
mc
aufrufen kann). Und die erlauben es, als Argument für ein Alias auch eine Python-Funktion zu verwenden und dabei die Parameter-Klammern wegzulassen.
Also in der .xonsrc hinter der Definition der Funktion das Alias definiert:
aliases['mc'] = m
Nach einem Neustart zeigt nun der MidnightCommander nach Aufruf von
mc
das gewünschte Verhalten.
Seit ein paar Tagen nutze ich nun Xonsh exklusiv... und die Shell hat mir bisher keine Probleme bereitet. Das Arbeiten mit Git erfordert keine Umstellung... und auch ssh ist damit unproblematisch.
Die Konfiguration wichtiger Elemente ist bei Xonsh genauso komfortabel, wie bei der Fish-Shell über ein Web-Interface möglich.
xonfig web

startet das Webinterface und dort kann man ganz komfortabel Einstellungen zum Farbschema, zum Prompt für Variablen und für Aliase vornehmen. Außerdem ist es damit möglich, Addons, sogenannte "
Xontribs" zu installieren.

Wer es puristisch mag, kann auch die Konfigurationsdatei mit einem Texteditor bearbeiten... oder man nutzt beide Möglichkeiten kombiniert. Die Eintragungen aus dem Webinterface sind in der Datei nämlich durch Kommentierungen deutlich markiert, und damit leicht erkennbar.
Irgendwie bin ich gerade "schockverliebt"... aber ich habe auch das Gefühl, dass ich auf Dauer mit Xonsh zufrieden sein werde (es sei denn, es ergeben sich irgendwo noch unerwartete Probleme).
Wer Python mag und sich damit auskennt, sollte durchaus mal einen Blick auf Xonsh werfen. Es lohnt sich!