Comment configurer mon shell sous Mac OS X?

21

Je sais que je peux définir "Shells open with" dans les préférences du terminal, mais je suis curieux de savoir s'il existe un moyen de définir cela à l'échelle du système (similaire à la mise à jour de / etc / passwd dans certains Unix).

nall
la source

Réponses:

24

Utilisez l' chshutilitaire comme ceci:

chsh -s bash

Apple a chshun peu changé sur Mac OS X par rapport à ce que chshvous verriez sous Linux par exemple. Vous pouvez lire sur leur dans le chsh Mac OS X Man page .

John T
la source
Et ici, je pensais que c'était quelque chose de compliqué avec un utilitaire spécifique à OSX, hé. Merci.
Nall
@john - bien appris :)
akira
Ouais, je connaissais la réponse la dernière fois aussi, j'étais juste battu! :(
John T
19

Notez que vous ne serez autorisé à passer à un shell répertorié dans /etc/shells. C'est normalement bien, mais cela signifie que si vous souhaitez installer Bash 4 (depuis Homebrew, MacPorts ou compiler le vôtre), vous devez ajouter une ligne à /etc/shells. (J'ai rencontré cela il y a quelques semaines et j'ai pensé que cela pourrait aider les autres à savoir ...)

Edit : Tim Smith souligne que vous pouvez contourner la /etc/shellslimitation si vous exécutez en chshtant que root via sudo. Par exemple, sudo chsh -s /usr/local/bin/my_shell $USERcela fonctionnera, même s'il my_shelln'est pas répertorié dans /etc/shells. Je préfère éditer /etc/shells, mais au final, c'est une utilisation dans les sudodeux sens car vous ne pouvez pas éditer en /etc/shellstant qu'utilisateur normal. Alors peut-être six d'un, une demi-douzaine de l'autre.

Télémaque
la source
Pourquoi changer /etc/shellssi vous n'êtes pas obligé? Pour raison, je préfère garder les fichiers système identiques.
ma11hew28
@MattDiPasquale Je ne sais pas ce que vous entendez par "raison". /etc/shellsest le fichier du système qui définit les shells reconnus. Je modifie ce fichier car je veux ajouter un shell à la liste des shells reconnus. Cela me semble assez raisonnable.
Télémaque
Bon alt. façon, pour une raison quelconque, chsh ne fonctionnerait pas pour moi. J'ai compris ça; chsh: bash: non-standard shell
RyBolt
@RyBolt Right: la raison est probablement ce que je mentionne dans la réponse. Vous ne pouvez pas utiliser chshseul si vous essayez d'utiliser un shell qui n'est pas répertorié dans /etc/shells.
Télémaque
@Telemachus, j'essayais simplement de passer au shell bash d'origine fourni avec ma version Mac OSX par défaut. Peut-être que ce n'est pas /etc/shellsce qui me semble étrange.
RyBolt
10

Pour ce faire à l'aide de l'interface graphique de Mac OS X:

  1. Ouvrez "Préférences Système".
  2. Ouvrez le volet de préférences «Comptes» / «Utilisateurs et groupes» et déverrouillez le volet de préférences le cas échéant.
  3. Sur l'utilisateur dont vous souhaitez changer le shell, control+ cliquez ou faites un clic droit sur l'utilisateur et choisissez "Options avancées ..."
  4. Là où il est indiqué «Login Shell:», remplacez-le par le shell que vous souhaitez utiliser.

Notez que cet emplacement est l'endroit où vous pouvez modifier votre répertoire personnel, UUID, ID utilisateur, ID de groupe et nom abrégé si vous n'êtes pas à l'aise avec le terminal. Il y a aussi une question similaire ici .

Chealion
la source
5

En utilisant les réponses ci-dessus, j'obtenais un message d'erreur:

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

Pour contourner cela:

sudo chsh -s zsh $(whoami)

whoami dans un sous-shell est de changer le shell de votre utilisateur, pas la racine.

Encore une chose si vous utilisez un homebrew. Lorsque vous exécutez des commandes en tant que root (en utilisant sudo), zsh pointe vers / bin / zsh, qui est fourni avec OSX et peut être obsolète. Pour utiliser celui qui est installé via homebrew, utilisez ce qui suit:

sudo chsh -s $(which zsh) $(whoami)
phil pirozhkov
la source