Comment changer le shell de connexion sous Mac OS X de bash à zsh?

90

J'essaie de changer le shell de connexion de Mac OS X de bashà zsh. Je vois que c'est possible dans Mac OS X Leopard , mais pour OS X Lion, je ne trouve pas de solution. J'espère vraiment qu'il est possible de changer le shell de connexion de bash à autre chose. Je ne sais pas trop où chercher.

Idlecool
la source
Après avoir changé shell en zsh, je devais toujours lancer zsh manuellement. Se déconnecter n'a pas aidé. J'ai ensuite changé zsh pour le shell de connexion le plus élevé. Déconnecté et c'était là.
1
Si rien d'autre, vous pouvez toujours modifier le fichier .bashrc pour rechercher et exécuter zsh. if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi. Astuce, lors de la modification des scripts de démarrage du shell, assurez-vous de garder un shell en marche et d'en démarrer un nouveau dans une autre fenêtre - si vous le cassez, vous aurez toujours un endroit facile pour le réparer.
Dan Pritts

Réponses:

101

Vous pouvez changer de shell utilisateur avec la commande suivante:

chsh -s /bin/zsh

Remarque: pour le changer pour un shell non standard, assurez-vous que son chemin a été ajouté au /etc/shellsfichier.

Spiff
la source
4
J'ai installé une version plus récente de zsh avec Homebrew, qui a mis zsh dans /usr/local/bin/zsh. Malheureusement, chsh ne permet pas cela, en disant chsh: /usr/local/bin/zsh: non-standard shell. La réponse de Daniel Beck est une solution appropriée dans ce cas.
adam_0
43
Si vous obtenez des problèmes avec des obus non standard, je pense que vous devriez être en mesure d'ajouter /usr/local/bin/zshà /etc/shellset il devrait résoudre ce problème.
Mike Meyers
13
Les informations d’installation de homebrew zsh vous recommandent de l’ajouter à / etc / shells: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells.
George
Ça ne marche pas parfois. La réponse de
@frank l'
1
@Awesome_girl Par défaut, il /etc/shellsappartient à root (le superutilisateur), qui ne peut y écrire que par écrit. Vous pouvez, par exemple, utiliser sudo vi /etc/shellsà utiliser sudo( s uper u ser ne ) pour exécuter l' viéditeur pour modifier /etc/shells. Je viens de tester sur mon système et de confirmer qu'il n'est PAS protégé par la protection de l'intégrité du système. Vous devriez donc pouvoir le modifier en tant que root sans passer par des étapes pour désactiver SIP.
Spiff
54

Curieusement, la même méthode que celle que vous avez utilisée dans votre question fonctionne toujours sous OS X Lion via Sierra (10.12). Seule différence: le volet des préférences s'appelle Utilisateurs et groupes et non Comptes .

  1. Ouvrez les "Préférences Système" → "Utilisateurs et groupes".
  2. À moins que l'icône de verrouillage ne soit déjà déverrouillée, cliquez sur l'icône de verrouillage et authentifiez-vous.
  3. Cliquez contextuellement sur un utilisateur dans la liste des noms d'utilisateur (maintenez la Controltouche enfoncée tout en cliquant ou cliquez avec le bouton droit de la souris sur une souris à deux boutons droitier).
  4. Dans le menu contextuel, choisissez "Options avancées…".
  5. Choisissez "Login shell" dans la feuille qui apparaît.

La note en haut de l'écran "Options avancées" indique que vous devez redémarrer pour que la modification soit prise en compte, mais vous devez simplement vous déconnecter et vous reconnecter.

entrez la description de l'image ici

Daniel Beck
la source
1
Confirmé que cela fonctionne dans Mountain Lion, ainsi que de travailler avec des "coques non standard" que vous pourriez installer vous-même (ou faire installer Homebrew).
adam_0
2
Confirmé en travaillant toujours dans 10.10 Yosemite.
ecnepsnai
4
Faites un clic droit sur le nom d'utilisateur pour afficher le menu contenant les "options avancées". Cela m'a pris quelques minutes pour trouver.
pdwalker
1
Pourquoi forcer quelqu'un à se rendre hors site pour rassembler toutes les informations avant de pouvoir répondre à la question? D'où le commentaire au cas où quelqu'un d'autre suppose la même chose que la réponse est ici plutôt qu'ici et là.
pdwalker
1
@jvriesem En fait, c'est le cas. Je suppose que vous avez sauté l'étape 2.
Daniel Beck
11

Ou:

sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
franc
la source
3
Pouvez-vous expliquer pourquoi cela répond à la question?
ChrisF
Assurez-vous de courir ceci après brew install zsh .
mmell
3
Veillez également à ce que le chemin de zsh installé via homebrew soit différent. Je le fais comme:sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
metakermit
1
AVERTISSEMENT: cela cassera votre shell si vous le copiez / collez sans vérifier d'abord le chemin de zsh. Faites ce que le métakermite a dit à la place.
radixhound
1

Si quelqu'un qui se pose la même question se pose sur macOS Sierra et que la commande suivante me permet de changer de shell sans problème:

chpass -s /usr/local/bin/zsh
Maxim Ligus
la source
1
Cela duplique une autre réponse et n’ajoute aucun nouveau contenu. S'il vous plaît, ne postez pas de réponse sauf si vous avez réellement quelque chose de nouveau à contribuer. "chfn et chsh sont des synonymes de chpass."
DavidPostill