Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Die Zsh ist neben der Bash eine weitere sehr mächtige Shell und Skriptsprache, die viele Möglichkeiten bietet. Die Zsh ist von diversen anderen Shells beeinflusst, wie beispielsweise der Korn-Shell (ksh), der C-Shell (csh) oder der TENEX C-Shell (tcsh). Der größte Vorteil der Z-Shell ist wohl der sehr ausgereifte Command-Editor.
Folgendes Paket muss installiert werden [1]:
zsh
mit apturl
Paketliste zum Kopieren:
sudo apt-get install zsh
sudo aptitude install zsh
Möchte man zsh als seine Standard-Shell einrichten, reicht ein Aufruf von chsh und der Eingabe von /usr/bin/zsh:
chsh Passwort: Login-Shell für Mustermann wird geändert. Geben Sie einen neuen Wert an oder drücken Sie ENTER für den Standardwert Login-Shell [/usr/bin/bash]: /usr/bin/zsh
Von nun an ist Zsh die Standardshell.
Mit derselben Methode kann auch wieder zu Bash oder Dash gewechselt werden. Wird die Shell einer laufenden Sitzung verändert, so muss sich der Nutzer erst neu anmelden, bevor er seine neue Shell nutzen kann.
Die Konfiguration wird in verschiedenen Dateien festgelegt, die beim Start der Z-Shell eingelesen werden. Die folgende Tabelle gibt Aufschluss über den Geltungsbereich der Einstellungen und die Reihenfolge, in der die so genannten start-up-files verarbeitet werden.
Geltungsbereich | Systemweit | Benutzerspezifisch | Kommentar |
1. Allgemein | /etc/zsh/zshenv | ~/.zshenv | Umgebungsvariablen die in jeder Sitzung gelten |
2. Login-Shell | /etc/zsh/zprofile | ~/.zprofile | Benutzerprofil; Befehle die während der Sitzung zur Verfügung stehen |
3. Interaktive Shell | /etc/zsh/zshrc | ~/.zshrc | Befehle, die beim Start einer interaktiven Shell ausgeführt werden |
4. Login-Shell | /etc/zsh/zlogin | ~/.zlogin | Befehle, die beim Start jeder Shell ausgeführt werden |
5. Logout | /etc/zsh/zlogout | ~/.zlogout | Befehle, die beim Beenden ausgeführt werden |
Die Linuxdistribution Grml bringt die Zsh von Haus aus mit und hat diese über die .zshrc sehr gut vorkonfiguriert. Um diese bei sich nutzen zu können installiert man sie sich mit dem Befehl:
wget -O ~/.zshrc https://raw.githubusercontent.com/grml/grml-etc-core/master/etc/zsh/zshrc
Die bestehende Konfiguration wird dabei überschrieben.
Durch Module kann die Zsh erweitert werden. Module werden mit dem Befehl:
autoload -U <modulname>
geladen und durch den Aufruf von <modulname> gestartet.
Das Modul der Z-Shell für das File Transfer Protocol kann einzeln geladen oder fest eingebunden werden. Im Artikel zu zftp ist ein Mittelweg beschrieben: die Einbindung für einen einzelnen Benutzer. Zudem werden einfache Befehle für die Sitzungsverwaltung und den Dateitransfer erklärt.
Das Modul promptinit bietet einige voreingestellte Prompt-Themes, mit denen man das (etwas langweilige) Standard-Prompt verschönern kann. Zuerst wird das Modul geladen und gestartet:
autoload -U promptinit && promptinit
Jetzt hat man das Kommando prompt zur Verfügung, mit dem man die Prompt-Themes laden kann:
prompt -c # zeigt den derzeit gewählten Theme prompt -l # zeigt alle verfügbaren Themes prompt -p <name> # zeigt ein Preview des Themes prompt -s <name> # ändert die Shell zum Theme <name> und speichert diesen prompt <name> # ändert die Shell zu <name>, speichert aber nicht
In der zsh gibt es neben der bekannten Möglichkeit, ein alias zu setzen, noch 2 weitere Möglichkeiten.
Globale Ersetzungen arbeiten grundsätzlich wie ein normales alias, mit dem einzigen Unterschied, dass globale Ersetzungen in jedem Teil des Befehls auftauchen dürfen und können. So lassen sich (zum Beispiel) häufig genutzte Pipes geschickt abkürzen. Ein alias für eine Pipe mit less sieht so aus:
alias -g L=' | less'
Weitere Beispiele dazu gibt es im Zsh-Wiki .
Mit zsh besteht die Möglichkeit, Dateiendungen (Suffixe) mit einer bestimmten Anwendung zu verknüpfen. Dann reicht es, den Namen der Datei im Terminal einzugeben, diese wird dann mit der definierten Anwendung geöffnet. So werden im folgenden Beispiel Dateien mit dem Suffix "wav" mit play abgespielt:
alias -s wav='play -q'
Auch hier bietet das Zsh-Wiki weitere Beispiele.
Das nützliche Werkzeug command-not-found, das einem in der Bash anzeigt, mit welchem Paket sich das eben aufgerufene aber nicht vorhandene Programm installieren lässt, ist in der zsh leider nicht standardmäßig aktiv. Zur Aktivierung muss die Datei /etc/zsh_command_not_found entweder am Ende der Datei /etc/zsh/zshrc (systemweit) oder in der Datei ~/.zshrc (benutzerspezifisch) eingebunden werden.
Aus
1 2 3 4 5 6 7 8 | ... # If you don't want compinit called here, place the line # skip_global_compinit=1 # in your $ZDOTDIR/.zshenv or $ZDOTDIR/.zprofice if [[ -z "$skip_global_compinit" ]]; then autoload -U compinit compinit fi |
wird (Zeilen 9-13 sind hinzugefügt worden)
1 2 3 4 5 6 7 8 9 10 11 12 13 | ... # If you don't want compinit called here, place the line # skip_global_compinit=1 # in your $ZDOTDIR/.zshenv or $ZDOTDIR/.zprofice if [[ -z "$skip_global_compinit" ]]; then autoload -U compinit compinit fi if [[ -x /usr/lib/command-not-found ]] ; then function command_not_found_handler() { /usr/lib/command-not-found --no-failure-msg -- $1 } fi |
Beipielausgabe ohne command not found
% gps-correlate zsh: command not found: gps-correlate
Beipielausgabe mit command not found
% gps-correlate zsh: command not found: gps-correlate No command 'gps-correlate' found, did you mean: Command 'gpscorrelate' from package 'gpscorrelate' (universe) gps-correlate: command not found
Die Z-Shell (zsh) – Eine mächtige Alternative zur Bash - Blogbeitrag, 02/2010 (nach unten blättern)
strcat.de/zsh Gute Einführung in die Zsh mit vielen Beispielen
robbyrussell/oh-my-zsh - Framework zum einfachen Einstieg, bei dem man "Oh meine Zsh" ruft
Unix-Shell Unix-Shells in der Wikipedia
Diese Revision wurde am 7. Oktober 2016 13:34 von verdooft erstellt.