L'exécution de chsh ne change pas le shell

19

Je veux changer mon shell de bash en zsh.

J'ai essayé d'exécuter ce qui suit en étant connecté en tant qu'utilisateur zol:

$ chsh -s /bin/zsh
$ sudo chsh -s /bin/zsh zol
$ su -c 'chsh -s /bin/zsh zol'
# The above all results with:
$ password:
$ chsh: Shell not changed.

# zsh exists in /etc/shells.. 
chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh

Qu'est-ce qui ne va pas? Comment puis-je le réparer?

Zolomon
la source
Avez-vous essayé d'exécuter «chsh» sans aucun argument en tant que zol?
George M
Utilisez-vous quelque chose comme ldap / nis etc.?
Ulrich Dangel
Plus important encore: pourquoi cela ne vous donne-t-il pas plus d'informations? Ce message pourrait être bien pour un sysop chevronné, mais pour la plupart des gens, c'est carrément désagréable. Je suis confronté au même problème 5 ans plus tard, et les gens se demandent pourquoi Linux n'a pas passé les 20 dernières années sur le bureau.
flurbius
Vous vous attendiez à ce que votre coque change instantanément? Vous modifiez votre shell de connexion avec chsh, ce qui signifie que vous devrez vous reconnecter .
Kusalananda

Réponses:

17

Les modifications de compte d'utilisateur ne seront pas enregistrées si vous avez ouvert / etc / passwd (vim / etc / passwd) lorsque vous essayez de modifier les informations.

Alternative: essayez avec usermod (comme zol):

$ usermod -s /bin/zsh 

ou

$ sudo usermod -s /bin/zsh zol

Si cela ne fonctionne pas non plus, modifiez /etc/passwdà la main.

sudo vipw
# set zol's shell to /bin/zsh
:wq
fromnaboo
la source
6
veuillez utiliser à la vipwplace de vimcar ils définissent les verrous de fichiers appropriés.
Ulrich Dangel
"Les modifications du compte utilisateur ne seront pas enregistrées si vous avez ouvert / etc / passwd" - mais pourquoi?
Thanatos
Ça ne marche pas trop. Quand je redémarre la machine virtuelle Linux (centos7), ça va maintenant!
WeizhongTu
1

Quand lancer "chsh -l" si vous voyez:

/usr/bin/zsh
/bin/zsh

Utilisez ensuite:

chsh -s /usr/bin/zsh

Avertissement: Les commandes ont été exécutées sur Fedora 25, dans ubuntun, l'option "-l" de est sortie.

lourencoccc
la source
-lest une option invalide pour moi. Je suis sur Ubuntu 16.04
byxor
Désolé, je ne donne pas d'informations sur la distribution où les commandes fonctionnent. Dans mon cas j'ai testé sur Fedora 25. J'essaye sur ubuntu et je vérifie que l'option "-l" est sortie.
lourencoccc
Quoi qu'il en soit, chsh -sa parfaitement fonctionné. Merci.
byxor
L'option est valable sur Manjaro mais elle refuse toujours de changer la coque.
flurbius
0

Si vous voyez chsh: Shell not changed., cela pourrait signifier que la coque a déjà été changée.

Vérifiez quel shell est répertorié:

cat /etc/passwd | grep `cd; pwd`

Si c'est correct, déconnectez-vous et reconnectez-vous pour que la modification prenne effet.

Code Bling
la source
0

Je suis juste tombé sur ça. Peu importe ce que j'ai fait, la connexion et la déconnexion ne changeraient pas mon shell, mais il était répertorié dans / etc / shells et dans / etc / passwd.

enfin, il m'est apparu: peut-être que je suis connecté avec une autre session?

J'ai donc fait

# who

et cela a validé que j'avais effectivement d'autres sessions ouvertes à partir d'autres machines:

dom  pts/0        Nov 6 13:53 (10.1.6.121)
dom  pts/1        Nov 5 12:30 (10.1.6.165)
dom  pts/2        Nov 4 12:33 (10.1.6.197)

J'ai ensuite fait:

pkill -KILL -u dom

J'ai été immédiatement déconnecté et après m'être reconnecté: Voila! Shell a été changé

Dom
la source