6

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 das Fass zum Überlaufen gebracht. 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 /ho<TAB>/us<TAB>/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

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

im Terminal.

Die bash durch zsh ersetzen

im Terminal:

Zsh Konfiguration

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

Anmerkung: 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 das Battle zsh vs bash 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. Die bash auf jedem meiner Rechner hat sie auf jeden Fall verdrängt. 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:

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
Zsh vs Bash – welche Shell ist besser?
6 votes, 4.67 avg. rating (93% score)

Jan Mollowitz

Hi, My name is Jan, I am a 28 year old software developer from Berlin, Germany. I blog about linux and programming in general. If you like my posts, feel free to subscribe via email or RSS feed.

6 Comments

    • Ja, kenne ich.
      Davon halte ich (wie die meisten) fuer Anfaenger nicht so viel, weil du
      eine grosse Menge neuer, unbekannter Aliases und Funktionen auf einmal vorgesetzt bekommst.
      Dadurch wirst du gerade am Anfang leicht ueberladen.
      Ausserdem bekommst du eine “vorgefertigte” Konfiguration, die wahrscheinlich nur bedingt zu deinen Anforderungen passt.

      Ich finde es gerade am Anfang wichtig, erst mal die Basics zu lernen und mit einer “leeren” Config anzufangen. Dann kannst du dir andere Configs angucken und dir das rauspicken, was du wirklich brauchst und fuer dich Sinn macht.
      So ist gewaehrleistet, dass du a) keine Bloated-Config hast und b) genau weisst, was in deiner Config passiert.
      Wenn du diesen Ansatz verfolgst, besteht spaeter, wenn du eher in die Zielgruppe der Oh-My-Zsh passt, fuer sie eh kein Bedarf mehr, weil ja schon die “perfekte”, auf dich zugeschnittene Config hast.

      • das sehe ich anders. ich bin heute auf zsh gewechselt und habe direkt im anschluss oh-my-zsh probiert. perfekt!

        was ist denn ein anfänger? jmd, der von der bash kommt? sicher kaum. :)

        auslöser war tatsächlich dein blog hier, allerdings stimme ich dir mit dem thema “Ich finde es gerade am Anfang wichtig, erst mal die Basics zu lernen und mit einer “leeren” Config anzufangen.” gar nicht zu.

        warum? mir ist wichtig, dass ich die 3, 4 vorteile mitnehme und ansonsten wie gewohnt weiter arbeite.

        statt dessen kämpfe ich hier mit den themes…ist nichts spektakuläres dabei. ich versuche seit 3h mein tree-style-theme der bash irgendwie zu kopieren….geht nicht.

        vielleicht kann mir mal jmd ein paar tipps geben. hier nen pic https://dl.dropboxusercontent.com/u/41679600/Bildschirmfoto%20vom%202013-09-06%2018%3A38%3A15.png

        danke.

        grüße,

        zeroc

        • Mit Anfaenger sind Menschen gemeint, die sich ein neues Themengebiet erschliessen. Dazu zaehlen auch Umsteiger, die natuerlich auch Anfaenger – sei es eine Programmiersprache, eine andere Shell, ein Job in einer anderen Branche, … – sind.

          Und auch du bist ein zsh-anfaenger, oder wuerdest du dem Satz “Sven hat gestern mit der zsh angefangen” etwa nicht zustimmen? :)

          Das ganze ist meine Lernphilosophie und Meinung, und keine Doktrin.
          Ich wurde nach meiner Meinung gefragt, wollte sie dem Fragenden ans Herz legen, und niemanden bevormunden.

          Wenn du glaubst, dass das falsch ist, habe ich nichts dagegen. Die Hauptsache ist, dass du umgestiegen bist :)

          • dem letzten satz stimme ich voll zu. dem rest ein wenig. mit dem umstieg auf zsh hat man ja erst mal keine probleme. man arbeitet wie gewohnt weiter. du hast es ja auch angesprochen: “rauspicken, was du wirklich brauchst und fuer dich Sinn macht.” …in der tat. aber das gilt ja ebenfalls für beide wege. da ich jetzt z.b. aliases nie nutze (außer für die gefühlte top10 einiger dirs, zu denen ich mit 3 buchstaben springe), ist mir “dieser nachteil” gar nicht aufgefallen.

            die vergleiche sind nicht ganz stimmig. ein umstieg von bash zu zsh, ist eher mit dem wechsel einer entwicklungsumgebung zu vergleichen. oder viel besser…dem wechsel des autos. ich hohle es vom verleih, steige ein und fahre los. fühlt sich zwar alles sehr komisch an, aber ich komme von A nach B. in einer ruhigen minute, kann man immer noch mal genau schauen, was sich geädert hat. die prinzipien sind ähnlich. wie auch immer…das auto ist vorkonfiguriert.

Leave a Reply

Your email address will not be published. Required fields are marked *