Usare zsh come shell di default su Mac

A partire da macOS Catalina, Mac usa zsh come shell di login e shell interattiva di default. Puoi impostare zsh come shell di default anche nelle versioni precedenti di macOS.

Di default, Mac usa zsh o bash come interprete della riga di comando per la shell di login e la shell interattiva:

zsh è altamente compatibile con la shell Bourne (sh) e per lo più compatibile con bash, con alcune differenze. Per ulteriori informazioni su zsh e sul relativo sistema di completamento della riga di comando, inserisci man zsh in Terminale.
  

Come cambiare la shell di default

Se l'account utente è configurato per utilizzare zsh (scelta consigliata), bash o un'altra shell, puoi cambiare la shell di default dalle preferenze Utenti e Gruppi o dalla riga di comando.

Dalle preferenze Utenti e Gruppi

  1. Scegli menu Apple  > Preferenze di Sistema, poi fai clic su Utenti e Gruppi. 
  2. Fai clic sull'icona del lucchetto  e inserisci il nome e la password dell'account.
  3. Fai clic tenendo premuto il tasto Ctrl sul nome utente nell'elenco di utenti a sinistra, poi scegli Opzioni avanzate. 
  4. Scegli una shell dal menu “Shell di login”, poi fai clic su OK per salvare le modifiche.

Dalla riga di comando

In Terminale, inserisci $ chsh -s path, dove path è uno dei percorsi delle shell elencati in /etc/shells, come /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh o /bin/tcsh.
  

Come utilizzare una shell diversa senza cambiare quella di default

Se non desideri che Terminale usi la shell di login di default nelle nuove finestre e nei nuovi pannelli di Terminale:

  1. Apri Terminale, poi scegli Terminale > Preferenze.
  2. Dal pannello Generali, seleziona “Comando (percorso completo)”. 
  3. Nel campo fornito, inserisci uno dei percorsi delle shell elencati in /etc/shells, come /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh o /bin/tcsh.

Se richiami la shell bash mentre macOS Catalina è configurato per l'uso di una shell diversa, vedrai un messaggio in cui viene indicato che la shell interattiva di default è attualmente impostata su zsh. Per ignorare questo avviso, puoi aggiungere questo comando a ~/.bash_profile o ~/.profile:

export BASH_SILENCE_DEPRECATION_WARNING=1


Come passare a un prompt e un profilo zsh

Se usi un profilo bash, come ad esempio per l'impostazione di variabili di ambiente, alias o variabili di percorso, devi passare a un profilo zsh equivalente. Per esempio:

  • .zprofile equivale a .bash_profile e viene eseguito al momento del login, anche tramite SSH
  • .zshrc equivale a .bashrc e viene eseguito per ogni nuova sessione di Terminale

Se usi .profile (un profilo conforme a POSIX), puoi fare in modo che zsh legga automaticamente le relative impostazioni tramite l'aggiunta di questo comando a .zprofile:

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

Inoltre, puoi spostare alcune impostazioni da un profilo bash a un profilo zsh senza modifiche. Ad esempio, per impostare variabili di ambiente: export MY_SETTING=1.

zsh riconosce una serie di identificatori di prompt diversa rispetto a bash e ha una sintassi più “pulita” per specificare l'output colorato, eliminando la necessità di usare sequenze di escape ANSI complesse. Ad esempio, ecco la sintassi di un prompt bash di default da .bash_profile:

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

Per convertire un prompt bash in un prompt zsh quando usi .zprofile o .zshrc:

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

Per ulteriori dettagli, consulta la pagina man su zsh.


Come eseguire il test degli script delle shell

Per testare la compatibilità degli script con shell compatibili con Bourne in macOS Catalina, puoi modificare /var/select/sh in /bin/bash, /bin/dash o /bin/zsh. Se modifichi /var/select/sh in una shell diversa da bash, tieni presente che gli script che usano bashism potrebbero non funzionare correttamente.

Puoi far sì che zsh emuli sh tramite l'esecuzione del comando zsh --emulate sh.
  

Le informazioni su prodotti non fabbricati da Apple, o su siti web indipendenti non controllati o testati da Apple, non implicano alcuna raccomandazione o approvazione. Apple non si assume alcuna responsabilità in merito alla scelta, alle prestazioni o all'utilizzo di prodotti o siti web di terze parti. Apple non esprime alcuna opinione in merito alla precisione o all'affidabilità dei siti web di terze parti. Per ulteriori informazioni contatta il fornitore.

Data di pubblicazione: