Création du shell par défaut ZSH sous MacOSX [fermé]

98

J'ai installé zsh sur mon Mac. et maintenant je veux en faire le shell par défaut au lieu de Bash. Mais il semble que je rencontre l'erreur suivante:

$ echo $SHELL
/bin/bash
$ chsh -s /usr/bin/zsh
Changing shell for harshamv.
Password for harshamv:
chsh: /usr/bin/zsh: non-standard shell
Harsha MV
la source
1
Qu'est-ce que la chsh -lsortie? (Si cela ne fonctionne pas, quel est le contenu de /etc/shells?) Êtes-vous sûr que cela échoue et pas seulement un avertissement? Est-ce que l'ajout /usr/bin/zshfait que cela fonctionne?
Etan Reisner
1
chsh: l'option nécessite un argument - l utilisation: chpass [-l location] [-u authname] [-s shell] [utilisateur]
Harsha MV
/ bin / bash / bin / csh / bin / ksh / bin / sh / bin / tcsh / bin / zsh
Harsha MV
Quel est le problème avec /bin/zsh?
jxh le
1
Il existe un moyen officiel de changer le shell par défaut en zsh maintenant. Voir le document Apple «Utilisez zsh comme shell par défaut sur votre Mac» support.apple.com/en-ca/HT208050
Anthonyeef

Réponses:

86

3 étapes faciles:

  1. which zshcela vous donne votre chemin vers zsh
  2. Puis chsh -s /bin/zshou remplacez le chemin de votre zsh s'il est différent
  3. Redémarrez votre machine
Quentin Perez
la source
yay cela a fonctionné. est-ce spécifique à Yosemite?
Harsha MV
2
Non je ne pense pas, c'était juste pour votre information :)
Quentin Perez
8
Un autre commentaire pertinent sur la même question plus ancienne qui dit d'ajouter /usr/bin/zshpour /etc/shellsrésoudre le problème.
Brice
Cela fonctionne parfaitement
Olkunmustafa
1
Définissez-le en conséquence sur / etc / shells! Recherchez le chemin zsh avec '$ nano / etc / shells'. Le mien était à / bin / zsh au lieu de / usr / bin / zsh le 10.12.2
oikonomopo
187

La bonne réponse aurait dû résoudre votre problème:

chsh: / usr / bin / zsh: shell non standard

La raison pour laquelle c'est le cas est que chshn'acceptera que les shells définis dans le fichier / etc / shells, comme vous pouvez le voir en lisant le manuel pour chsh:

chsh acceptera le chemin complet de tout fichier exécutable sur le système. Cependant, il émettra un avertissement si le shell n'est pas répertorié dans le fichier / etc / shells.

Pour résoudre ce problème et faire de zsh le shell par défaut, vous devez donc:

$ sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)

De toute évidence, je suppose que zshc'est sur votre chemin ici. Cette solution fonctionnera également si, par exemple, vous choisissez d'installer la dernière version zshavec brew install zsh.

EDIT (merci pour ThisIsFlorianK pour le commentaire) :

En fonction de la configuration de votre shell, vous pouvez recevoir un message disant /etc/shells: Permission denied. Vous pouvez trouver des informations sur ce problème ici. Pour contourner ce problème, utilisez plutôt ce qui suit:

$ sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)
dangom
la source
4
c'est plus précis que la réponse acceptée à mon avis. en supposant que zsh est installé dans / usr / bin / zsh, les autres réponses ne fonctionnent pas. Ils ont travaillé pour OP car par défaut, Apple installe zsh dans / bin / zsh. Cependant, si vous vouliez utiliser zsh de homebrew (qui est installé sous / usr / local / bin / zsh), ce serait la bonne façon de le faire
verboze le
J'ai "bash: / etc / shells: Permission refusée". La réponse via les préférences système a fonctionné pour moi.
Ricardo Stuven
44
Si vous obtenez le /etc/shells: Permission denied==> Faites-le à la place: sudo sh -c "echo $(which zsh) >> /etc/shells"
ThisIsFlorianK
1
stackoverflow.com/a/44547726/99834 - a fonctionné sans jouer avec les fichiers système. La seule chose qui manque est une version CLI pour effectuer la même opération.
sorin
@sorin S'agit-il de vandalisme gratuit ou y a-t-il quelque chose qui cloche dans la réponse? Les fichiers système sont des fichiers texte modifiables pour une raison. chshest disponible par défaut pour une raison. Bien qu'il n'y ait rien de mal en soi à cliquer sur des tas de menus pour accomplir la même chose, ce n'est pas seulement non portable et sujet aux erreurs, mais aussi trompeur en ce sens que cela cache aux utilisateurs d'où vient le changement.
dangom
52

J'ai pu faire fonctionner cela en procédant comme suit:

  1. Accédez aux Préférences Système
  2. Cliquez sur "Utilisateurs et groupes"
  3. Cliquez sur le verrou pour apporter des modifications.
  4. Cliquez avec le bouton droit sur l'utilisateur actuel -> Options avancées
  5. Changez le shell de connexion en / bin / zsh dans la liste déroulante.
  6. Ouvrez un nouveau terminal et vérifiez avec echo $SHELL
Nate Jenson
la source
4
si vous installez zsh via homebrew, il placera zsh dans /usr/local/bin/zsh. Par conséquent, vous devrez modifier /etc/shellssous sudo et ajouter une entrée pour /usr/local/bin/zshavant de pouvoir sélectionner l'exécutable zsh que l'hombrew a installé
Baldy
7

Sur mon MacBook professionnel, je devais faire ceci:

sudo chsh -s /usr/local/bin/zsh my_user_name

Ensuite, j'ai dû créer un .bash_profilefichier pour que mon terminal passe en z-shell à chaque fois que je l'ouvre:

touch ~/.bash_profile
echo 'export SHELL=$(which zsh)' >> ~/.bash_profile
echo 'exec $(which zsh) -l' >> ~/.bash_profile

La dernière idée a été empruntée d'ici .

sakovias
la source