December 22, 2012

Zsh vs Bash – welche Shell ist besser?

Nachdem ich jetzt schon öfters über die ZSH Shell gestolpert bin und nur Gutes gehört habe, hat Vokus Kommentar den finalen Anstoss gegeben. Jetzt ist die Zsh meine bash-Ersatz. Wenn du durch eine Suche nach “zsh vs bash” auf diese Seite gekommen bist, nutzt du wahrscheinlich noch die Bash. Warum und wie du mit nur 2 Terminal-Befehlen die Zsh als Standardshell installierst und die Bash loswirst, erkläre ich dir hier:

Die Zsh: eine Patchwork-Shell

Der Name zsh kommt vom Professor des Programmiers, Zhong Shao. Die zsh vereint die besten Features von bash, ksh und tcsh und wird durch eigene, exklusive Features abgerundet.

Vorteile der zsh vs bash

Die Vorteile der zsh gegenüber der bash (die Standardshell unter Ubuntu) sind vielseitig. Zuerst sollte man erwähnen, dass du nichts Neues lernen musst, bzw. die zsh genauso wie die bash benutzen kannst. Das ist schon mal ein ziemlich guter Startpunkt. Doch das kann ja nicht der Grund sein, um zur zsh zu wechseln, oder?

1. zsh Multi-Verzeichnis Autocompletion

Zielverzeichnis: /home/user/Documents/test

In der bash navigierst du per ~/Doc<TAB>/te<TAB> dorthin.

In der zsh gibst du die Anfangsbuchstaben ein und drückst am Ende nur 1x <TAB>, also /ho/us/Doc/te<TAB> automatisch wird von der zsh alles autocompletet

2. zsh TAB-Completion Menü

zsh completion menu

Es gibt ein interaktives TAB-Completion Menü in der zsh. Falls du z.B. einen Befehl ohne Parameter angibst und <TAB> drückst, öffnet sich ein Menü (siehe Screenshot, dort habe ich “vim” eingegeben und <TAB> gedrückt), durch das du entweder wie gewohnt per <TAB> oder aber auch mit den Pfeiltasten scrollen kannst.

3. zsh Smart-Dir-Changing

Mit der zsh brauchst du nicht wie der bash ein vorangestelltes cd, um in ein Verzeichnis wechseln. Das einfache Tippen des Verzeichnisnamens und ein Druck auf Enter genügen.

4. zsh Typocorrection

zsh autocorrection example

Kein Verschreiben mehr: die zsh checkt im Gegensatz zur bash automatisch, ob du Befehle richtig geschrieben hast und gibt ansonsten Korrekturvorschläge.

5. zsh Multi-Session-Shared-History {.mceTemp}

Du kannst die Shell-History während mehrerer Sessions in den verschiedenen Sessions nutzen.

6. Zsh Power-Globbing

Das Globbing in der zsh ist wesentlich besser als in der bash, doch das ist ein eigenes Thema. Wenn du nicht weißt, was Globbing ist, schlag dich und schau hier nach.

7. besseres Shell-Scripting mit der zsh

Das ist ein Vorteil der zsh gegenüber der bash, den ich selber nicht beurteilen kann, da ich gerade erst mit Shell-Scripting begonnen habe. Deshalb kann ich nicht wirklich etwas dazu sagen und schließe mich einfach allen anderen an.

Das waren nur einige wenige Features der zsh. Es gibt noch viele viele mehr, guck z.B. mal hier.

Zsh installieren

Die zsh befindet sich in den Repositories von Ubuntu, deshalb reicht ein einfaches

sudo apt-get install zsh

im Terminal.

Die bash durch zsh ersetzen

im Terminal:

sudo chsh -s /usr/bin/zsh username

Zsh Konfiguration

Wie die bash lässt sich die zsh über eine rc konfigurieren: sie heißt .zshrc und liegt in deinem Home-Ordner.

Per man zshoptions kannst du dir die setopt-Möglichkeiten in der .zshrc angucken…

Es gibt im Internet mehrere Sampe-zshrc‘s, einige Beispiel-zshrcs habe ich hier aufgelistet:

Fazit: zsh vs bash

Die zsh hat klar gewonnen. Man muss sie ja nicht gleich zur Standard-Shell machen. Im Terminal starten kann man sie nach der Installation einfach per zsh und ein wenig rumspielen. Ich kann nur jedem empfehlen, der zsh wenigstens eine Chance zu geben.

Ist noch etwas unklar? Fehlt dir etwas in diesem Artikel? Hilf mir, ihn zu verbessern, und hinterlasse unten bitte ein Kommentar oder bewerte ihn!

Wenn Dir dieser Artikel gefallen hat, dann abonniere doch einfach den Newsletter und bekomme alle Artikel bequem geliefert!

Hilfreiche zsh-Quellen: