Was ist zsh? Funktionen und erste Schritte

Autor: Veröffentlicht

Kurz erklärt: Zsh, auch Z shell genannt, ist eine System-Shell: ein Programm, das eingegebene Befehle interpretiert und die gewünschten Aufgaben ausführt. Umfangreiche Befehlsvervollständigung, eine Befehlshistorie und vielfältige Konfigurationsmöglichkeiten erleichtern die Arbeit im Terminal. Zsh eignet sich vor allem für die interaktive Arbeit mit dem System. Du musst es aber nicht kennen, um mit dem Terminal arbeiten zu können.

Zsh und Terminal — was ist der Unterschied?

Ein Terminal ist eine Anwendung, in der du Befehle eingibst und deren Ergebnisse angezeigt bekommst. Die Shell läuft innerhalb dieser Anwendung: Sie liest die Befehle, erkennt ihre Syntax und veranlasst die Ausführung. In einem Terminal kannst du verschiedene Shells starten, zum Beispiel zsh oder Bash.

Wenn du cd Dokumente eingibst, führt zsh seinen eingebauten Befehl zum Wechseln des Verzeichnisses aus. Bei git status startet es das externe Programm Git, sofern dieses installiert und über den Suchpfad für Programme erreichbar ist. Diese Unterscheidung ist wichtig: Mit zsh werden nicht automatisch die Werkzeuge installiert, deren Namen du in Befehlen verwendest.

Zsh ist unter anderem für Linux und macOS verfügbar. Seit macOS Catalina ist es die Standard-Shell für neue Benutzerkonten; einzelne Konten können jedoch anders eingestellt sein. Unter Windows lässt es sich beispielsweise in WSL verwenden, einer Umgebung, in der Werkzeuge für Linux ausgeführt werden können.

Was bringt zsh im Alltag?

Der größte Vorteil von zsh besteht darin, dass du wiederkehrende Teile von Befehlen seltener von Hand eingeben musst. Wie komfortabel das ist, hängt allerdings von der Konfiguration ab: Eine frische Installation muss weder so aussehen noch so funktionieren wie das Terminal in einer Anleitung.

Zu den nützlichen Funktionen gehören:

Wenn dein aktuelles Verzeichnis beispielsweise einen Ordner namens projekt-shop enthält, kannst du cd proj eingeben und Tab drücken. Die Shell versucht dann, den Namen zu vervollständigen. Passen mehrere Verzeichnisse, kann sie die verfügbaren Möglichkeiten anzeigen. Ähnliche Funktionen bieten auch andere Shells. Für manche Nutzer liegt der Vorteil von zsh daher im Umfang der Konfigurationsmöglichkeiten und verfügbaren Erweiterungen, nicht allein in der Vervollständigung.

Zsh oder Bash — was solltest du wählen?

Bash ist eine weitere beliebte Shell, die häufig unter Linux und in Administrationsskripten eingesetzt wird. Zsh und Bash unterstützen viele ähnliche Befehle, sind syntaktisch aber nicht vollständig kompatibel. Unterschiede gibt es unter anderem bei Arrays, der Expansion von Variablen und der Verarbeitung von Dateinamensmustern.

Ein praktisches Beispiel: Mit den Standardeinstellungen meldet zsh bei ls *.txt einen Fehler, wenn das Muster keine Dateien mit der Endung .txt im Verzeichnis findet. Bash übergibt in diesem Fall standardmäßig das unveränderte Argument *.txt an das Programm ls. Dieses meldet dann, dass eine solche Datei nicht existiert. Ein scheinbar identischer Befehl kann also an unterschiedlichen Stellen scheitern.

Wähle für die tägliche Arbeit die Shell, mit der dir deine Aufgaben leichter fallen. Wähle den Interpreter für Skripte bewusst. Ein Skript, das mit #!/bin/bash beginnt, legt Bash als Interpreter fest, wenn es direkt gestartet wird. Wenn du im Terminal zsh verwendest, musst du ein solches Skript deshalb nicht umschreiben. Startest du es hingegen mit zsh skript.sh, können Kompatibilitätsfehler auftreten.

Wie prüfst und startest du zsh?

Prüfe zunächst, ob das Programm verfügbar ist:

zsh --version

Wird eine Versionsnummer ausgegeben, kannst du zsh probeweise starten, indem du zsh eingibst. Mit exit beendest du diese Sitzung und kehrst zur vorherigen Shell zurück. Die Standardeinstellungen deines Kontos ändern sich dadurch nicht.

Findet das System das Programm nicht, installiere es unter Linux über den Paketmanager deiner Distribution. Unter Debian und Ubuntu verwendest du dafür beispielsweise sudo apt install zsh. Der Befehl erfordert Administratorrechte. Bei einer anderen Distribution findest du das passende Vorgehen in ihrer offiziellen Dokumentation.

Der häufig empfohlene Befehl echo $SHELL zeigt normalerweise die eingestellte Login-Shell an, nicht unbedingt die Shell der aktuellen Sitzung. Nach dem Start von zsh kannst du echo $ZSH_VERSION ausführen: In zsh enthält diese Variable dessen Versionsnummer.

Die Standard-Shell eines Kontos lässt sich meist mit dem Werkzeug chsh ändern. Prüfe vorher den Programmpfad und die Vorgaben deines Systems: Die Shell muss gegebenenfalls in der Liste /etc/shells eingetragen sein. Bei Firmenkonten können außerdem administrative Einschränkungen gelten.

zsh konfigurieren und die Rolle von Oh My Zsh

Die zentrale Konfigurationsdatei für interaktive Sitzungen ist normalerweise ~/.zshrc. Dabei steht ~ für das Home-Verzeichnis des Benutzers. In dieser Datei kannst du Aliase, also Kurzformen für Befehle, und Einstellungen für die Vervollständigung hinterlegen. Ein einfacher Einstieg sieht so aus:

alias ll='ls -lh'
autoload -Uz compinit
compinit

Der Alias ermöglicht es, ll statt ls -lh einzugeben. Die folgenden Zeilen initialisieren das Vervollständigungssystem. Erstelle vor dem Bearbeiten einer vorhandenen Datei eine Kopie und prüfe, ob sie bereits ähnliche Einstellungen enthält. Am einfachsten testest du Änderungen in einer neuen zsh-Sitzung.

Oh My Zsh ist eine optionale Sammlung von Konfigurationen, Themes und Plugins, nicht die Shell selbst. Farbige Vorschläge beim Tippen oder Syntaxhervorhebung stammen häufig aus zusätzlichen Erweiterungen. Sie sind nach der Installation von zsh nicht automatisch verfügbar.

Starte zsh zunächst, ohne die Standard-Shell zu ändern, und erledige einige deiner üblichen Aufgaben. Füge Erweiterungen erst hinzu, wenn du konkret benennen kannst, welche Tätigkeit sie erleichtern sollen. Prüfe vor dem Ausführen eines Installers dessen Herkunft und welche Änderungen er vornimmt.

Siehe auch: Was ist AGI?

Lesen Sie auch

Wie PHP-FPM PHP-Anfragen verarbeitet, sich vom Webserver unterscheidet und wie du Prozesse an Last und Hosting-Ressourcen anpasst.
BIND ist offene DNS-Serversoftware. Erfahre, welche Aufgaben sie übernimmt und wann sich der Betrieb eines eigenen Servers lohnt.
Was Polens REGON-Register und seine Kennnummer bedeuten, wie sie sich von NIP und KRS unterscheiden und wie Sie Unternehmensdaten prüfen.