Das Ausführen von chsh ändert die Shell nicht

19

Ich möchte meine Shell von bash auf zsh ändern.

Ich habe versucht, Folgendes auszuführen, während ich als Benutzer zol angemeldet war:

$ 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

Was könnte falsch sein? Wie kann ich es reparieren?

Zolomon
quelle
Haben Sie versucht, 'chsh' ohne Argumente als zol auszuführen?
George M
Benutzt du so etwas wie ldap / nis etc.?
Ulrich Dangel
Viel wichtiger: Warum gibt es nicht mehr Infos? Diese Nachricht mag für einen erfahrenen Sysop in Ordnung sein, aber für die meisten Menschen ist sie ausgesprochen unhöflich. Ich stehe 5 Jahre später vor dem gleichen Problem und die Leute fragen sich, warum Linux die letzten 20 Jahre nicht auf dem Desktop verbracht hat.
Flurbius
Sie haben erwartet, dass sich Ihre Shell sofort ändert? Sie ändern Ihre Anmeldeshell mit chsh, dh Sie müssen sich erneut anmelden.
Kusalananda

Antworten:

17

Benutzerkontoänderungen werden nicht gespeichert, wenn Sie beim Versuch, die Informationen zu ändern, / etc / passwd (vim / etc / passwd) geöffnet haben.

Alternative: versuche es mit usermod (als zol):

$ usermod -s /bin/zsh 

oder

$ sudo usermod -s /bin/zsh zol

Wenn dies auch nicht funktioniert, bearbeiten Sie es /etc/passwdvon Hand.

sudo vipw
# set zol's shell to /bin/zsh
:wq
fromnaboo
quelle
6
Bitte verwenden Sie vipwstattdessen, vimwie sie die entsprechenden Dateisperren setzen.
Ulrich Dangel
"Benutzerkontoänderungen werden nicht gespeichert, wenn Sie / etc / passwd geöffnet haben" - aber warum?
Thanatos
Es funktioniert auch nicht. Wenn ich die virtuelle Linux-Maschine (Centos7) neu starte, ist es jetzt OK!
WeizhongTu
1

Wann man "chsh -l" ausführt, wenn man sieht:

/usr/bin/zsh
/bin/zsh

Dann benutze:

chsh -s /usr/bin/zsh

Warnung: Die Befehle wurden auf Fedora 25 ausgeführt. In Ubuntun ist die Option "-l" aus.

lourencoccc
quelle
-list eine ungültige Option für mich. Ich bin auf Ubuntu 16.04
byxor
Entschuldigung, ich gebe keine Informationen über die Distribution, in der die Befehle funktionieren. In meinem Fall habe ich Fedora 25 getestet. Ich probiere Ubuntu aus und stelle sicher, dass die Option "-l" nicht verfügbar ist.
Lourencoccc
Egal, chsh -shat einwandfrei funktioniert. Vielen Dank.
Byxor
Die Option ist auf Manjaro gültig, weigert sich jedoch, die Shell zu ändern.
Flurbius
0

Wenn Sie sehen chsh: Shell not changed., könnte dies bedeuten, dass die Shell bereits geändert wurde.

Überprüfen Sie, welche Shell aufgelistet ist:

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

Wenn dies korrekt ist, melden Sie sich ab und wieder an, damit die Änderung wirksam wird.

Code Bling
quelle
0

Ich bin nur darauf gestoßen. Unabhängig davon, was ich beim An- und Abmelden getan habe, wurde meine Shell noch nicht geändert. Sie wurde in / etc / shells und in / etc / passwd aufgelistet.

endlich dämmerte es mir: Vielleicht bin ich mit einer anderen Sitzung eingeloggt?

So tat ich

# who

und es stellte sich heraus, dass ich tatsächlich andere offene Sessions von anderen Rechnern hatte:

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)

Ich habe dann gemacht:

pkill -KILL -u dom

Ich wurde sofort abgemeldet und nach dem erneuten Anmelden: Voila! Shell wurde geändert

Dom
quelle