Zsh als standaardshell gebruiken op een Mac

Vanaf macOS Catalina gebruikt de Mac zsh als de standaardinlogshell en interactieve shell. Je 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 (Z-shell) is vanaf macOS Catalina de standaardshell voor alle nieuwe gebruikersaccounts.

  • bash is de standaardshell in macOS Mojave en ouder.

zsh is zeer compatibel met de Bourne-shell (sh) en grotendeels compatibel met bash, met een paar verschillen. Voor meer informatie over zsh en het uitgebreide commandoregel-aanvullingssysteem van deze shell voer je man zsh

De standaardshell wijzigen

Je kunt de standaardshell wijzigen via de commandoregel of de instellingen voor 'Gebruikers en groepen', ongeacht of je gebruikersaccount is geconfigureerd voor gebruik van zsh (aanbevolen), bash of een andere shell.

Via de commandoregel

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

Via de instellingen voor 'Gebruikers en groepen'

In macOS Ventura of nieuwer:

  1. Kies het Apple-menu  > 'Systeeminstellingen' en klik op 'Gebruikers en groepen' in de navigatiekolom.

  2. Control-klik op je gebruikersnaam of profielfoto in de gebruikerslijst aan de linkerkant en kies 'Geavanceerde opties'.

  3. Voer je gebruikersnaam en wachtwoord in wanneer hierom wordt gevraagd.

  4. Kies een shell in het menu 'Inlogshell' en klik op 'OK' om de wijzigingen te bewaren.

In eerdere versies van macOS:

  1. Kies het Apple-menu  > 'Systeemvoorkeuren' en klik op 'Gebruikers en groepen'.

  2. Klik op het hangslotGeen alt beschikbaar voor afbeelding en voer je gebruikersnaam en wachtwoord in.

  3. Control-klik op je 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.

Een andere shell gebruiken zonder de standaardshell te wijzigen

Als je niet wilt dat Terminal de standaardinlogshell gebruikt in nieuwe Terminal-vensters en tabbladen:

  1. Open Terminal en kies 'Terminal' > 'Instellingen' (of 'Voorkeuren').

  2. Selecteer 'Commando (volledig pad)' in het paneel 'Algemeen'.

  3. Voer in het veld ernaast 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 je de bash-shell activeert terwijl macOS 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 je dit commando toe aan ~/.bash_profile of ~/.profile:

export BASH_SILENCE_DEPRECATION_WARNING=1

Naar een zsh-profiel en -prompt overschakelen

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

  • .zprofile is gelijk aan .bash_profile

  • .zshrc is gelijk aan .bashrc

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

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

Je kunt ook een aantal instellingen zonder aanpassingen van een bash-profiel naar een zsh-profiel verplaatsen. 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 zie je 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="%10F%m%f:%11F%1~%f \$ "

Raadpleeg de zsh man-pagina voor meer informatie.

Je shellscripts testen

Om de compatibiliteit van scripts met Bourne-compatibele shells in macOS Catalina of hoger te testen, kun je /var/select/sh wijzigen in /bin/bash, /bin/dash of /bin/zsh. Als je /var/select/sh wijzigt in een andere shell dan bash, moet je er rekening mee houden dat scripts die gebruikmaken van typische bash-commando's ('bashisms') mogelijk niet naar behoren werken.

Je kunt zsh sh laten nabootsen door het commando zsh --emulate sh

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: