Come modificare la Shell di accesso su Mac OS X da bash a zsh?


90

Sto cercando di cambiare la Shell di accesso di Mac OS X da basha zsh. Vedo che è possibile in Mac OS X Leopard , ma per OS X Lion non riesco a trovare un modo. Spero davvero che sia possibile cambiare la shell di Login da bash a qualcos'altro. Non sono esattamente sicuro di dove cercare.


Dopo aver cambiato la shell in zsh, dovevo ancora avviare zsh manualmente. La disconnessione non ha aiutato. Ho quindi cambiato zsh nella shell di login più in alto. Disconnesso ed eccolo lì.

1
Se non altro, puoi sempre modificare .bashrc per trovare ed eseguire zsh. if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi. Suggerimento: quando si modificano gli script di avvio della shell, assicurarsi di mantenere in esecuzione una shell e avviarne una nuova in un'altra finestra: se la si interrompe, si ha ancora un posto facile per ripararla.
Dan Pritts,

Risposte:


101

È possibile modificare la shell utente con il comando seguente:

chsh -s /bin/zsh

Nota: per cambiarlo per una shell non standard, assicurarsi che il suo percorso sia stato aggiunto al /etc/shellsfile.


4
Ho installato una versione più recente di zsh con Homebrew, che ha inserito zsh /usr/local/bin/zsh. Sfortunatamente, chsh non lo consente, dicendo chsh: /usr/local/bin/zsh: non-standard shell. La risposta di Daniel Beck è una soluzione adatta in questo caso.
adam_0,

43
Se stai ricevendo problemi con le coperture non standard, penso che si dovrebbe essere in grado di aggiungere /usr/local/bin/zshal /etc/shellse dovrebbe risolvere il problema.
Mike Meyers,

13
Le informazioni sull'installazione di homebrew zsh in realtà ti consigliano di aggiungerlo a / etc / shells: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells.
George

A volte non funziona. La risposta di @ frank lo assicura però
oliverbarnes il

1
@Awesome_girl Per impostazione predefinita, /etc/shellsè di proprietà e solo scrivibile da root (il superutente). Si potrebbe, ad esempio, utilizzare sudo vi /etc/shellsdi utilizzare sudo( s uper u ser non ) per eseguire l' vieditor per modificare /etc/shells. Ho appena testato sul mio sistema e confermato che NON è protetto da System Integrity Protection, quindi dovresti essere in grado di modificarlo come root senza saltare attraverso i cerchi per disabilitare SIP.
Spiff,

54

Stranamente, lo stesso metodo a cui ti colleghi nella tua domanda funziona ancora in OS X Lion attraverso Sierra (10.12). L'unica differenza: il riquadro delle preferenze è denominato Utenti e gruppi anziché Account .

  1. Apri "Preferenze di Sistema" → "Utenti e gruppi".
  2. A meno che l'icona del lucchetto non sia già sbloccata, fai clic sull'icona del lucchetto e autenticati.
  3. Fai clic con il pulsante destro del mouse su un utente nell'elenco dei nomi utente (tieni premuto il Controltasto mentre fai clic o fai clic con il pulsante destro del mouse con il mouse a due pulsanti destro).
  4. Nel menu di scelta rapida, selezionare "Opzioni avanzate ...".
  5. Scegli "Shell di accesso" nel foglio che appare.

La nota nella parte superiore della schermata "Opzioni avanzate" afferma che è necessario riavviare per rendere effettive le modifiche, ma è sufficiente disconnettersi e riconnettersi.

inserisci qui la descrizione dell'immagine


1
Confermato che questo funziona in Mountain Lion, oltre a lavorare con "shell non standard" che potresti installare tu stesso (o avere Homebrew install).
adam_0,

2
Confermato ancora funzionante in Yosemite 10.10.
ecnepsnai,

4
fai clic con il tasto destro del mouse sul nome utente per visualizzare il menu contenente "opzioni avanzate". Mi ci sono voluti un paio di minuti per trovarlo.
pdwalker,

1
Perché costringere qualcuno ad andare fuori sede per raccogliere tutte le informazioni prima di poter rispondere? Da qui il commento nel caso qualcun altro faccia lo stesso presupposto che la risposta sia qui piuttosto che qua e là.
pdwalker,

1
@jvriesem In realtà, lo fa. Suppongo che tu abbia saltato il passaggio 2.
Daniel Beck

11

O:

sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)

3
Puoi spiegare perché questo risponde alla domanda?
ChrisF,

Assicurati di eseguirlo dopo brew install zsh .
mmell

3
Inoltre, fai attenzione che il percorso di zsh installato tramite homebrew sia diverso. Lo faccio come:sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
metakermit il

1
ATTENZIONE: Questo romperà la shell se la copi / incolli senza prima controllare il percorso di zsh. Fai invece quello che diceva metakermit.
radixhound,

1

Se qualcuno si chiede lo stesso problema si verifica su macOS Sierra e il seguente comando mi ha permesso di cambiare shell senza problemi:

chpass -s /usr/local/bin/zsh

1
Questo duplica un'altra risposta e non aggiunge nuovi contenuti. Per favore, non pubblicare una risposta a meno che tu non abbia effettivamente qualcosa di nuovo da contribuire. "chfn e chsh sono sinonimi di chpass."
DavidPostill
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.