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.