L'esecuzione di chsh non cambia la shell


19

Voglio cambiare la mia shell da bash a zsh.

Ho provato a eseguire quanto segue durante l'accesso come utente 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

Cosa potrebbe esserci di sbagliato? Come posso ripararlo?


Hai provato a eseguire 'chsh' senza argomenti come zol?
George M,

Stai usando qualcosa come ldap / nis ecc.?
Ulrich Dangel,

Molto più importante: perché non ti dà più informazioni? Quel messaggio potrebbe andare bene per un sysop esperto ma per la maggior parte delle persone è decisamente maleducato. Sto affrontando lo stesso problema da 5 anni e la gente si chiede perché Linux abbia passato gli ultimi 20 anni non sul desktop.
flurbius,

Ti aspettavi che la tua shell cambiasse all'istante? Modifichi la shell di accesso con chsh, il che significa che dovrai accedere di nuovo.
Kusalananda

Risposte:


17

Le modifiche all'account utente non verranno salvate se si è aperto / etc / passwd (vim / etc / passwd) quando si tenta di modificare le informazioni.

Alternativa: prova con usermod (come zol):

$ usermod -s /bin/zsh 

o

$ sudo usermod -s /bin/zsh zol

Se neanche questo funziona, modifica /etc/passwda mano.

sudo vipw
# set zol's shell to /bin/zsh
:wq

6
si prega di utilizzare vipwinvece di vimcome impostare i blocchi di file appropriati.
Ulrich Dangel,

"Le modifiche dell'account utente non verranno salvate se hai aperto / etc / passwd" - ma perché?
Thanatos,

Non funziona troppo. Quando riavvio la macchina virtuale Linux (centos7), ora è OK!
WeizhongTu

1

Quando eseguire "chsh -l" se vedi:

/usr/bin/zsh
/bin/zsh

Quindi utilizzare:

chsh -s /usr/bin/zsh

Attenzione: i comandi sono stati eseguiti su Fedora 25, In ubuntun l'opzione "-l" da è fuori.


-lè un'opzione non valida per me. Sono su Ubuntu 16.04
byxor il

Spiacenti, non fornisco informazioni sulla distribuzione in cui funzionano i comandi. Nel mio caso ho provato su Fedora 25. Provo su Ubuntu e verifico che l'opzione "-l" non sia disponibile.
lourencoccc,

Indipendentemente da ciò, ha chsh -sfunzionato perfettamente. Grazie.
byxor,

L'opzione è valida su Manjaro ma rifiuta ancora di cambiare la shell.
flurbius,

0

Se vedi chsh: Shell not changed., potrebbe significare che la shell è già stata cambiata.

Controlla quale shell è elencata:

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

Se è corretto, disconnettersi e riconnettersi per rendere effettive le modifiche.


0

Mi sono appena imbattuto in questo. Indipendentemente da ciò che ho fatto il login e il backout non avrebbero cambiato la mia shell ma era elencata in / etc / shells e in / etc / passwd.

finalmente mi sono reso conto: forse sono loggato con un'altra sessione?

Così ho fatto

# who

e ha convalidato che avevo effettivamente altre sessioni aperte da altre macchine:

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)

Ho quindi fatto:

pkill -KILL -u dom

Sono stato immediatamente disconnesso e dopo aver effettuato nuovamente l'accesso: Voila! Shell è stata cambiata

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.