ZSH vs Bash: Unix-Shell im Vergleich

Wie schneidet die Z-Shell (ZSH) im Vergleich zum Industriestandard Bash-Shell ab?

Seit Jahren ist die Bash-Shell der Industriestandard für die Shells von Unix-Betriebssystemen, aber jetzt hat sie echte Konkurrenz in Form der moderneren Z-Shell (ZSH), die sich als echte Alternative etabliert hat. Dazu gehören Kali-Linux, die Standarddistribution für Sicherheitstests, und Apple, die beide in den letzten Jahren Bash durch ZSH als Standard-Shell in ihrem Tech-Stack ersetzt haben.

In diesem Artikel befassen wir uns mit der Rolle, die Unix-Shells in der Softwareentwicklung spielen, und warum es sich lohnt, sie zu vergleichen. Wir werden auch untersuchen, was diese beiden Unix-Shell-Technologien voneinander unterscheidet und warum sich eine wachsende Zahl von Benutzern für den Wechsel von Bash zu ZSH entscheidet.

Was ist eine Unix-Shell?

Eine Unix-Shell wie ZSH oder Bash ist eine Benutzeroberfläche für das Unix-System. Unix ist ein Oberbegriff für eine Gruppe oder Familie von Betriebssystemen, die sich alle sehr ähnlich sind und weitgehend auf einer Technologie basieren. Unix-Systeme werden in verschiedenen Technologien eingesetzt; die Betriebssysteme Linux und macOS sind beides Unix-Systeme.

Die Shell ist die Hülle des Kerns des Betriebssystems. Die Unix-Shell fungiert als Schnittstelle für die Kommunikation zwischen dem Unix-Systemkern und dem Benutzer. Eine direkte Kommunikation wäre viel zu komplex. Wie unten dargestellt, kann die Unix-Shell als Übersetzungsschicht zwischen dem Systemkern und dem Benutzer verstanden werden.

zsh vs bash: unix shell

Die Benutzer geben Befehle in die Eingabezeile der Unix-Shell ein, die dann direkt vom Computer ausgeführt werden können. Aus diesem Grund wird eine Shell oft auch als Kommandozeileninterpreter bezeichnet.

Was ist ZSH (Z shell)?

Die Z-Shell oder ZSH ist eine Unix-Shell, die sowohl als Kommandozeileninterpreter als auch als interaktive Login-Shell verwendet werden kann. ZSH wird von vielen Entwicklern als moderne, innovative Shell mit einer Vielzahl von robusten Funktionen beschrieben und ist wegen ihrer effektiven Befehlsinterpretation sehr beliebt.

Die Unix-Shell wurde 1990 von dem ehemaligen Studenten Paul Falstad entwickelt und ist heute als Open-Source-Technologie verfügbar. Die Technologie, die auf der Bash-Shell basiert, ist vor allem für ihre Leistungsfähigkeit bekannt, die den meisten anderen Unix-Shells überlegen sein soll. Die kontinuierliche Weiterentwicklung der Open-Source-Technologie hat dazu geführt, dass nützliche Funktionen aus anderen Unix-Shells wie Ksh oder Tcsh in ZSH implementiert wurden. ZSH ist eine fortschrittliche Unix-Shell, die seit der Veröffentlichung von MacOS Catalina im Jahr 2019 die Standardshell für MacOS Catalinia und seit Ende 2020 die Standardshell für Kali Linux ist.

Was ist Bash (Bash Shell)?

Die Bash-Shell ist wahrscheinlich die am weitesten verbreitete Unix-Shell auf Linux-Betriebssystemen, zumal viele beliebte Linux-Distributionen wie Ubuntu oder Arch ebenfalls Bash als Standardshell verwenden. Sie war außerdem die Standard-Unix-Shell auf allen Apple macOS-Versionen bis zur Veröffentlichung von macOS Catalina im Jahr 2019, bei der die Bash durch die oben beschriebene ZSH-Shell ersetzt wurde.

Die 1989 erstmals veröffentlichte und von Brian Fox entwickelte Open-Source-Technologie ist unter anderem wegen ihres robusten Funktionsumfangs und ihrer Benutzerfreundlichkeit beliebt. Sie ist auf jeder Standard-Linux-Distribution zu finden, weshalb die meisten Linux-Benutzer wahrscheinlich schon einmal mit der Bash in Berührung gekommen sind.

Die Verwendung von Unix-Shells wie ZSH und Bash

Unix-Shells sind Schnittstellen zwischen Computer-Kern und Benutzer. Die Shell führt basierend auf den vom Benutzer eingegebene Input das Programm aus und gibt nach Ausführung den gegebenen Output. Dies ist ganz einfach ausgedrückt die Funktion einer Unix-Shell. Der Nutzen die eine Verknüpfung zum Kern mithilfe einer Unix-Shell bietet, ist eine Plattform, die eine Interaktion und Ausführung von Programmen ermöglicht.

Die Verwendung und die Vorteile einer Unix-Shell wie ZSH und Bash sind vielseitig. Unix-Shells bieten eine Reihe von Befehlen (Kommandos) und Programmen, die die Arbeit in vielseitig unterstützen kann. Allgemein ist das Arbeiten sehr Interaktiv, da es den Benutzer eingaben machen lässt, um ausgeführt zu werden. Die Shell ermöglicht mehrere Befehle zu kombinieren, was arbeiten allgemein effizienter macht. Es spart Zeit da ermöglicht wird nur ein einziger Befehl, statt gleich mehrere Befehle schreiben zu müssen.

Große sich wiederholende Aufgaben können mithilfe von Unix-Shell-Scripting effizient erledigt werden, weshalb vor allem im Bereich DevOps oder Systemadministration Unix-Shell-Scripting Kenntnisse vom Vorteil sein können.

ZSH vs Bash: Warum viele von Bash zu ZSH wechseln

Die Bash Shell ist wohl die Standard Shell für die meisten UNIX Betriebssysteme, es ist eine Benutzerfreundliche, robuste Technologie die standardgemäß bei Linux-Distros wie Ubuntu oder Arch verwendet wird. Viele Linux Nutzer entscheiden sich jedoch auf ZSH umzustellen und den Verantwortlichen von Kali Linux und macOS Catalina nachzugehen, welche auch erst vor relativ kurzer Zeit auf die Z shell (ZSH) umgestiegen sind.

Es gibt eine Reihe von Überlegungen, die besonders bei ZSH gegenüber zu Bash vorzustellen sind. Einer der wohl nützlichsten im Alltag zu verwendenden Funktionen ist die „TAB-Completion“. Die „TAB-Completion“ ist eine Hilfe die dir ein scrollbares Menüanzeigt mit allen möglichen Parametern zu dem zuvor eingegebenen Befehl. Bei der Eingabe eines Befehls und ein darauffolgende Ausführen der „TAB-Taste“ zeigt es ein Menü mit möglich ausführbaren Befehlen was das arbeiten effizienter und einfacher machen kann.

Auch sind andere sehr Nützliche Funktionen wie die automatische Rechtschreibkorrektur (Typocorrection), die Möglichkeit das Verzeichnis ohne den üblichen cd Befehl zu benutzen oder die Multi-Session-Shared-History welche dafür sorgt das der Shell-Verlauf während mehrerer Sessions in verschiedenen Tabs genutzt werden kann. Außerdem kommen noch ein paar einzigartige Features wie das Login/Logout watching, Closing comments, Variable/Functions index und weitere Funktionen dazu.

Benutzer können vorallem über Ubuntu ganz leicht auf ZSH umstellen, da sich in Ubuntu welche Bash als Standard-Shell verwendet ZSH im Repository befindet. Mit folgendem Befehl lässt sich ZSH auf Ubuntu installieren:

sudo apt-get install zsh

und so ersetzt man Bash durch ZSH im Terminal:

sudo chsh -s /usr/bin/zsh username

Fazit

Für die meisten Benutzer wird es kaum einen Grund geben, ihre Unix-Shell zu wechseln. Insbesondere für Anfänger oder Alltagsnutzer ist die vom Betriebssystem bereitgestellte Unix-Shell im Allgemeinen ausreichend. Für Produktivitätsoptimierer und Programmierer, die viel mit Unix-Shell-Skripten arbeiten, kann ein Wechsel durchaus sinnvoll sein. Für normale Benutzer lohnt es sich jedoch wahrscheinlich nicht, von der Bash auf die Z-Shell umzusteigen, da erstere aus guten Gründen die Standardshell vieler Systeme ist.

Hier nicht hervorgehoben, bietet auch Bash Funktionen wie unterschiedliche Shell-Funktionen, Aliases oder unlimitierte Befehlsverläufe/Indexed Arrays. Man sollte sich also, wie bei allen anderen Technologien auch, bei der Wahl zwischen den beiden an den eigenen Vorlieben bzw. dem jeweiligen best-fit orientieren.

Ausgewählte Blogbeiträge