Come posso impostare la mia shell in Mac OS X?


21

So di poter impostare "Apri shell con" nelle preferenze di Terminale, ma sono curioso di sapere se esiste un modo a livello di sistema di impostarlo (simile all'aggiornamento di / etc / passwd in alcuni Unix).

Risposte:


24

Utilizzare l' chshutilità in questo modo:

chsh -s bash

Apple è cambiata chshun po 'su Mac OS X rispetto ad esempio a quello chshche vedresti su Linux. Si può leggere su loro nel chsh Mac OS X Man pagina .


E qui ho pensato che fosse qualcosa di complicato con qualche utility specifica per OSX, eh. Grazie.
nall

@john - ben imparato :)
Akira il

Sì, conoscevo la risposta anche l'ultima volta, sono stato appena picchiato! :(
John T,

19

Nota che ti sarà permesso di passare a una shell elencata in /etc/shells. Questo di solito va bene, ma significa che se si desidera installare Bash 4 (da Homebrew, MacPorts o compilando il proprio), è necessario aggiungere una riga a /etc/shells. (Mi sono imbattuto in questo poche settimane fa e ho pensato che potesse aiutare gli altri a sapere ...)

Modifica : Tim Smith sottolinea che è possibile aggirare la /etc/shellslimitazione se si esegue chshcome root tramite sudo. Ad esempio sudo chsh -s /usr/local/bin/my_shell $USERfunzionerà, anche se my_shellnon è elencato in /etc/shells. Preferisco modificare /etc/shells, ma alla fine, è un uso in sudoentrambi i modi poiché non è possibile modificarlo /etc/shellscome utente normale. Quindi forse sei su uno, mezza dozzina dell'altro.


Perché cambiare /etc/shellsse non è necessario? Per motivi di salute, preferisco mantenere gli stessi file di sistema.
ma11hew28,

@MattDiPasquale Non sono sicuro di cosa intendi per "sanità mentale". /etc/shellsè il file sul sistema che definisce le shell riconosciute. Modifico quel file perché voglio aggiungere una shell all'elenco delle shell riconosciute. Mi sembra abbastanza ragionevole.
Telemaco,

Buona alt. in qualche modo, per qualche motivo chsh non funzionerebbe per me. Ho capito ; chsh: bash: non-standard shell
RyBolt

@RyBolt Right: il motivo è probabilmente quello che menziono nella risposta. Non puoi usare chshda solo se stai cercando di usare una shell che non è elencata /etc/shells.
Telemaco,

@Telemachus, stavo solo cercando di passare alla shell bash originale fornita con la mia build predefinita di Mac OSX. Forse non è in quello /etc/shellsche mi sembra strano.
RyBolt,

10

Per fare ciò utilizzando la GUI di Mac OS X:

  1. Apri "Preferenze di Sistema".
  2. Apri il riquadro delle preferenze "Account" / "Utenti e gruppi" e sblocca il riquadro delle preferenze, se applicabile.
  3. Sull'utente che desideri modificare la shell, control+ fai clic o fai clic con il pulsante destro del mouse sull'utente e scegli "Opzioni avanzate ..."
  4. Dove dice "Login Shell:" cambia questo con la shell che desideri utilizzare.

Da notare che questa posizione è dove puoi cambiare la tua home directory, UUID, ID utente, ID gruppo e nome breve se non ti senti a tuo agio con il Terminale. C'è una domanda simile anche qui .


5

Utilizzando le risposte sopra ho ricevuto un messaggio di errore:

$ chsh -s zsh
Changing shell for myuser.
Password for myuser:
chsh: zsh: non-standard shell

Per aggirare questo:

sudo chsh -s zsh $(whoami)

whoami in una subshell è cambiare la shell per l'utente, non la radice.

Un'altra cosa se usi l'homebrew. Quando si eseguono comandi come root (usando sudo), zsh punta a / bin / zsh, che viene fornito con OSX e potrebbe non essere aggiornato. Per utilizzare quello aggiornato installato tramite homebrew, utilizzare quanto segue:

sudo chsh -s $(which zsh) $(whoami)
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.