Använda zsh som förvald kommandotolk på Mac

Från och med macOS Catalina använder Mac-datorn zsh som förvald kommandotolk för inloggning och interaktiv kommandotolk. Du kan även göra zsh till förvald kommandotolk i tidigare versioner av macOS.

På Mac används antingen zsh eller bash som förvald kommandotolk för inloggning och interaktiv kommandotolk:

  • zsh (kommandotolk Z) är den förvalda kommandotolken för alla användarkonton som skapades nyligen, från och med macOS Catalina.

  • bash är den förvalda kommandotolken i macOS Mojave och tidigare.

zsh är mycket kompatibel med kommandotolken Bourne (sh) och till viss del kompatibel med bash, med några skillnader. Mer information om zsh och dess omfattande ifyllnadssystem för kommandon hittar du genom att ange man zsh i Terminal.

Så här ändrar du förvald kommandotolk

Oavsett om ditt användarkonto är inställt för att använda zsh (rekommenderas), bash eller någon annan kommandotolk, kan du ändra förvalet i kommandoraden eller i inställningarna för användare och grupper.

I kommandoraden

Ange $ chsh -s sökväg i Terminal, där sökväg är en av kommandotolksökvägarna som finns i /etc/shells, till exempel /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh, eller /bin/tcsh.

I inställningarna för användare och grupper

macOS Ventura eller senare:

  1. Välj Apple-menyn  > Systeminställningar och klicka sedan på Användare och grupper i sidofältet.

  2. Kontrollklicka på ditt användarnamn eller din användarbild i listan över användare till höger och välj sedan Avancerade alternativ.

  3. Ange ditt användarnamn och lösenord när du uppmanas till det.

  4. Välj en kommandotolk från menyn Kommandotolk för inloggning och klicka sedan på OK för att spara ändringarna.

I tidigare versioner av macOS:

  1. Välj Apple-menyn  > Systeminställningar och klicka sedan på Användare och grupper.

  2. Klicka på låsetIngen bildtext för denna bild och ange sedan ditt användarnamn och lösenord.

  3. Kontrollklicka på ditt användarnamn i listan över användare till vänster och välj sedan Avancerade alternativ.

  4. Välj en kommandotolk från menyn Kommandotolk för inloggning och klicka sedan på OK för att spara ändringarna.

Så här använder du en annan kommandotolk utan att ändra förvalet

Om du inte vill att den förvalda kommandotolken ska användas av Terminal i nya Terminal-fönster och -flikar:

  1. Öppna Terminal och välj sedan Terminal > Inställningar.

  2. I rutan Allmänt väljer du Kommando (fullständig sökväg).

  3. Ange en av kommandotolksökvägarna som finns i /etc/shells, till exempel /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh, eller /bin/tcsh i det intilliggande fältet.

Om du anropar bash-kommandotolken medan macOS är konfigurerat för att använda en annan kommandotolk, visas ett meddelande om att den förvalda interaktiva kommandotolken nu är zsh. Du kan inaktivera varningen genom att lägga till kommandot i ~/.bash_profile eller ~/.profile:

export BASH_SILENCE_DEPRECATION_WARNING=1

Så här växlar du till en zsh-profil och tolk

Om du använder en bash-profil, till exempel för att ställa in miljövariabler, alias eller sökvägsvariabler, bör du istället använda en motsvarande zsh-profil. Till exempel:

  • .zprofile är likvärdig med .bash_profile och körs vid inloggning, även över SSH

  • .zshrc är likvärdig med .bashrc och körs för varje ny Terminal-session

Om du använder .profile (en POSIX-kompatibel profil), kan du ställa in att zsh automatiskt ska läsa dess inställningar genom att lägga till det här kommandot i .zprofile:

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

Du kan också flytta några inställningar från en bash-profil till en zsh-profil utan ändringar. Om du exempelvis vill ställa in miljövariabler: export MY_SETTING=1.

zsh känner igen en annan uppsättning tolkspecificerare än bash och har en renare syntax för att ange färgade utdata, vilket gör att du inte behöver använda komplicerade ANSI escape-sekvenser. Här är till exempel syntaxen för en förvald bash-tolk från .bash_profile:

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

Om du vill omvandla den bash-tolken till en zsh-tolk när .zprofile eller .zshrc används:

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

På sidan zsh man finns mer information.

Så här testar du kommandotolkskript

Om du vill testa kompatibiliteten med Bourne-kompatibla kommandotolkar i macOS Catalina eller senare kan du ändra /var/select/sh till /bin/bash, /bin/dash eller /bin/zsh. Om du ändrar /var/select/sh till en annan kommandotolk än bash, bör du tänka på att skript som använder bashismer kanske inte fungerar korrekt.

Du kan ställa in zsh på emulering genom att köra kommandot zsh --emulate sh.

Information om produkter som inte tillverkas av Apple eller som finns på oberoende webbplatser som inte står under Apples kontroll eller testats av Apple anges endast i informationssyfte och är inte att betrakta som rekommendationer av eller stöd för produkterna. Apple tar inget ansvar för valet eller nyttjandet av webbplatser eller produkter från tredje part och inte heller för produkternas prestanda. Apple garanterar inte att informationen på webbplatser från tredje part är korrekt eller tillförlitlig. Kontakta leverantören för mer information.

Publiceringsdatum: