Zsh als standaard shell gebruiken op een Mac

Vanaf macOS Catalina gebruikt de Mac zsh als de standaard inlogshell en interactieve shell. U kunt zsh ook in oudere versies van macOS als standaard instellen.

Een Mac gebruikt standaard zsh of bash als commandoregel-interpreter voor de inlogshell en interactieve shell:

Zsh is zeer compatibel met de Bourne shell (sh) en grotendeels compatibel met bash, met een paar verschillen. Voor meer informatie over zsh en zijn uitgebreide commandoregel-aanvullingssysteem, voert u man zsh in Terminal in.
  

De standaard shell wijzigen

Ongeacht of uw gebruikersaccount is geconfigureerd voor gebruik van zsh (aanbevolen), bash of een andere shell, u kunt de standaard shell wijzigen via het voorkeurenpaneel 'Gebruikers en groepen' of de commandoregel.

Via het voorkeurenpaneel 'Gebruikers en groepen'

  1. Kies het Apple-menu  > 'Systeemvoorkeuren' en klik op 'Gebruikers en groepen'. 
  2. Klik op het hangslot  en voer uw accountnaam en -wachtwoord in.
  3. Control-klik op uw gebruikersnaam in de gebruikerslijst aan de linkerkant en selecteer 'Geavanceerde opties'. 
  4. Kies een shell in het menu 'Inlogshell' en klik op 'OK' om de wijzigingen te bewaren.

Via de commandoregel

Voer in Terminal het volgende in: $ chsh -s path, waarbij path een van de shellpaden is die worden vermeld in /etc/shells, zoals /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh of /bin/tcsh.
  

Een andere shell gebruiken zonder de standaard shell te wijzigen

Als u niet wilt dat Terminal de standaard inlogshell gebruikt in nieuwe Terminal-vensters en tabbladen:

  1. Open Terminal en kies 'Terminal' > 'Voorkeuren'.
  2. Selecteer 'Commando (volledig pad)' in het paneel 'Algemeen'. 
  3. Voer in het opgegeven veld een van de shellpaden in die worden vermeld in /etc/shells, zoals /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh of /bin/tcsh.

Als u de bash shell oproept terwijl macOS Catalina is geconfigureerd voor gebruik van een andere shell, verschijnt er een melding dat de standaard interactieve shell nu zsh is. Om deze waarschuwing uit te schakelen, voegt u dit commando toe aan ~/.bash_profile of ~/.profile:

export BASH_SILENCE_DEPRECATION_WARNING=1


Naar een zsh-profiel en -prompt overschakelen

Als u een bash-profiel gebruikt, bijvoorbeeld om omgevingsvariabelen, aliassen of padvariabelen in te stellen, moet u overschakelen naar gebruik van een zsh-equivalent. Bijvoorbeeld:

  • .zprofile is gelijk aan .bash_profile en wordt uitgevoerd bij het inloggen, inclusief over SSH
  • .zshrc is gelijk aan .bashrc en wordt uitgevoerd bij iedere Terminal-sessie

Als u een .profile (een POSIX-compatibel profiel) gebruikt, kunt u ervoor zorgen dat zsh automatisch de instellingen leest door dit commando toe te voegen aan .zprofile:

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

U kunt ook een aantal instellingen verplaatsen van een bash-profiel naar een zsh-profiel zonder aanpassingen. Bijvoorbeeld, om omgevingsvariabelen in te stellen: export MY_SETTING=1.

zsh herkent een andere set prompt-specifiers dan bash en heeft een elegantere syntaxis voor het specificeren van gekleurde output, wat het gebruik van complexe ANSI-escapereeksen overbodig maakt. Hier ziet u bijvoorbeeld de syntaxis voor een standaard bash-prompt van .bash_profile:

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

Om deze bash-prompt om te zetten naar een zsh-prompt bij gebruik van .zprofile of .zshrc:

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

Raadpleeg de zsh man-pagina voor meer informatie.


Uw shellscripts testen

Om de compatibiliteit van scripts met Bourne-compatibele shells in macOS Catalina te testen, kunt u /var/select/sh wijzigen in /bin/bash, /bin/dash of /bin/zsh. Als u /var/select/sh wijzigt in een andere shell dan bash, houdt u er dan rekening mee dat scripts die gebruikmaken van bashisms mogelijk niet naar behoren werken.

U kunt zsh sh laten nabootsen door het commando zsh --emulate sh uit te voeren.
  

Informatie over producten die niet door Apple zijn gemaakt of externe websites die niet door Apple worden beheerd of getest, wordt verstrekt zonder aanbeveling of goedkeuring. Apple aanvaardt geen aansprakelijkheid wat betreft de keuze, de prestaties of het gebruik van websites of producten van derden. Apple doet geen enkele toezegging met betrekking tot de juistheid of de betrouwbaarheid van websites van derden. Neem contact op met de leverancier voor meer informatie.

Publicatiedatum: