zsh als Standard-Shell auf dem Mac verwenden

Ab macOS Catalina verwendet dein Mac zsh als standardmäßige Anmelde-Shell und interaktive Shell. Du kannst zsh auch als Standard in früheren macOS-Versionen festlegen.

Der Mac verwendet standardmäßig zsh oder bash als Befehlszeileninterpreter für die Anmelde-Shell und interaktive Shell:

  • zsh (Z-Shell) ist die Standard-Shell für alle neu erstellten Benutzeraccounts, beginnend mit macOS Catalina.
  • bash ist die Standard-Shell in macOS Mojave und älter.

zsh ist fast vollständig mit der Bourne-Shell (sh) und weitgehend kompatibel mit bash. Es gibt allerdings einige Unterschiede. Um Informationen zur zsh und ihrem umfassenden Befehlszeilen-Vervollständigungssystem zu erhalten, gib man zsh in Terminal ein.
  

Die Standard-Shell ändern

Unabhängig davon, ob dein Benutzeraccount für die Verwendung von zsh (empfohlen), bash oder einer anderen Shell konfiguriert ist, kannst du die Standard-Shell über die Einstellung "Benutzer & Gruppen" oder die Befehlszeile ändern.

Über die Einstellung "Benutzer & Gruppen"

  1. Wählen das Apple-Menü () > "Systemeinstellungen", und klicke auf "Benutzer & Gruppen". 
  2. Klicke auf das Schloss , und gib dann deinen Accountnamen und dein Passwort ein.
  3. Klicke bei gedrückter Ctrl-Taste in der Liste der Benutzer links auf deinen Benutzernamen, und wähle dann "Erweiterte Optionen". 
  4. Wähle im Menü "Anmelde-Shell" eine Shell, und klicke dann auf "OK", um die Änderungen zu sichern.

Über die Befehlszeile

Gib in Terminal $ chsh -s path ein, wobei path einer der Shell-Pfade ist, der in /etc/shells aufgeführt ist, z. B. /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh oder /bin/tcsh.
  

Eine andere Shell verwenden, ohne die Standard-Shell zu ändern

Wenn Terminal die standardmäßige Anmelde-Shell in neuen Terminal-Fenstern und -Tabs nicht verwenden soll, gehe wie folgt vor:

  1. Öffne Terminal, und wähle dann "Terminal" > "Einstellungen".
  2. Wähle im Bereich "Allgemein" die Option "Befehl (vollständiger Pfad)". 
  3. Gib in das angezeigte Feld einen der Shell-Pfade ein, der in /etc/shells aufgeführt ist, z. B. /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh oder /bin/tcsh.

Wenn du die bash-Shell aufrufst, während macOS Catalina zur Verwendung einer anderen Shell konfiguriert ist, wird die Meldung angezeigt, dass die standardmäßige interaktive Shell nun zsh ist. Um diese Warnung zu unterdrücken, kannst du diesen Befehl zu ~/.bash_profile oder ~/.profile hinzufügen:

export BASH_SILENCE_DEPRECATION_WARNING=1


Zu einem zsh-Profil und einer zsh-Eingabeaufforderung wechseln

Wenn du ein bash-Profil verwendest, um beispielsweise Umgebungsvariablen, Aliase oder Pfadvariablen festzulegen, solltest du auf ein zsh-Äquivalent umsteigen. Beispiel:

  • .zprofile entspricht .bash_profile und wird bei der Anmeldung ausgeführt, auch über SSH
  • .zshrc entspricht .bashrc und wird für jede neue Terminal-Sitzung ausgeführt

Wenn du .profile (ein POSIX-kompatibles Profil) verwendest, kannst du zsh veranlassen, seine Einstellungen automatisch zu lesen, indem du diesen Befehl zu .zprofile hinzufügst:

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

Du kannst auch einige Einstellungen aus einem bash-Profil in ein zsh-Profil ohne Änderung verschieben. Zum Beispiel, um Umgebungsvariablen festzulegen: export MY_SETTING=1.

zsh erkennt einen anderen Satz von Eingabeaufforderungsbezeichnern als bash und verfügt über eine sauberere Syntax zum Festlegen der farbigen Ausgabe, wodurch die Verwendung komplexer ANSI-Escapesequenzen entfällt. Nachfolgend als Beispiel die Syntax für eine standardmäßige bash-Eingabeaufforderung von .bash_profile:

export PS1="\[\e[92;40m\]\h\[\e[m\]:\[\e[93m\]\W\[\e[m\] \\$ "

So konvertierst du diese bash-Eingabeaufforderung in eine zsh-Eingabeaufforderung, wenn du .zprofile oder .zshrc verwendest:

export PS1="%10F%m%f:%11F%1~%f \$ "

Auf der Seite "zsh man" findest du weitere Details.


Shell-Skripte testen

Um die Skript-Kompatibilität mit Bourne-kompatiblen Shells in macOS Catalina zu testen, kannst du /var/select/sh in /bin/bash, /bin/dash oder /bin/zsh ändern. Wenn du /var/select/sh in eine andere Shell als bash änderst, beachte, dass Skripte, die Bashismen verwenden, möglicherweise nicht richtig funktionieren.

zsh kann zum Emulieren von sh durch Ausführen des Befehls zsh --emulate sh veranlasst werden.
  

Informationen zu nicht von Apple hergestellten Produkten oder nicht von Apple kontrollierten oder geprüften unabhängigen Websites stellen keine Empfehlung oder Billigung dar. Apple übernimmt keine Verantwortung für die Auswahl, Leistung oder Nutzung von Websites und Produkten Dritter. Apple gibt keine Zusicherungen bezüglich der Genauigkeit oder Zuverlässigkeit der Websites Dritter ab. Kontaktiere den Anbieter, um zusätzliche Informationen zu erhalten.

Veröffentlichungsdatum: