Comment changer le shell par défaut en ZSH - chsh dit “shell invalide”

36

J'ai installé ZSH sur l'un de mes ordinateurs virtuels, où je l'ai compilé à partir des sources. L'emplacement de ZSH est /usr/local/bin/zshlorsque je l'exécute chsh -s /usr/local/bin/zshen sortie chsh: /usr/local/bin/zsh is an invalid shell. J'ai aussi essayé avec sudo. Comment puis-je changer cela?

Zach Russell
la source
duplication possible de Où puis-je changer de shell?
Mikel
6
@ Mikel, non, cette question est "je ne sais pas chsh" plutôt que " chshne fonctionne pas pour moi".
cjm

Réponses:

49

Ajoutez zsh à /etc/shells:

command -v zsh | sudo tee -a /etc/shells

Vous pouvez maintenant utiliser chsh pour définir zsh en tant que shell:

sudo chsh -s "$(command -v zsh)" "${USER}"

Voir cette documentation: Changer votre shell de connexion

Biapy
la source
8

Vous devez ajouter /usr/local/bin/zshà /etc/shells.

Adam Lang
la source
3

Tout d’abord, vérifiez si zshest listé comme un shell valide par

cat /etc/shells

Si zshn'est pas répertorié, installez-le. Par exemple, si vous utilisezapt

sudo apt-get install zsh

Ne, étape 1 à nouveau et voir le chemin de zsh. Dans mon cas, les deux /usr/bin/zshet /usr/zshest répertorié. Comme @ Stéphane Chazelas mentionné dans le commentaire, si vous aimez compiler et installer le shell à partir de rien, assurez-vous d’ajouter le chemin /etc/shells.

Changer la coquille en utilisant

chsh -s /usr/bin/zsh

De la page de manuel :

-s, --shell SHELLNom du nouveau shell de connexion de l'utilisateur. Si ce champ est vide, le système sélectionne le shell de connexion par défaut.

Déconnectez-vous et connectez-vous à nouveau.

Sat Yam
la source
Oui, si vous installez le shell dans le cadre d’un package de système d’exploitation, celui-ci ajoute généralement le shell /etc/shells. Le point ici est que si vous compilez et installez le shell à la main, vous devez également vous ajouter le chemin /etc/shellsmanuellement.
Stéphane Chazelas
Bon point. Je pensais à un gestionnaire de paquets comme 'apt'. J'ai édité la réponse pour inclure votre point.
Sam Yam
C’est essentiellement ce que les deux autres réponses ont déjà dit.
Jeff Schaller