J'ai installé zsh sur mon Mac. et maintenant je veux en faire le Shell par défaut au lieu de Bash. Mais il me 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
which zsh
cela vous donne votre chemin vers zshchsh -s /bin/zsh
_ ou remplace le chemin vers votre zsh si différentLa bonne réponse aurait dû résoudre votre problème:
chsh:/usr/bin/zsh: shell non standard
La raison en est que chsh
n'acceptera que les shells définis dans le fichier/etc/shells, comme vous pouvez le constater en lisant le manuel de chsh
:
chsh acceptera le chemin d'accès complet de tout fichier exécutable sur le système. Cependant, un avertissement sera émis 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)
Évidemment, je suppose que zsh
est sur votre chemin ici. Cette solution fonctionnera également si, par exemple, vous choisissez d'installer le dernier zsh
avec brew install zsh
.
[~ # ~] éditer [~ # ~] (merci pour ThisIsFlorianK pour le commentaire) :
Selon 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 résoudre ce problème, utilisez plutôt les éléments suivants:
$ Sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)
J'ai pu obtenir ce travail en procédant comme suit:
echo $Shell
Sur mon travail MacBook, je devais faire ceci:
Sudo chsh -s /usr/local/bin/zsh my_user_name
Ensuite, j'ai dû créer un .bash_profile
fichier pour que mon terminal bascule vers 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 .