Warum kann ich die Shell mit dem Befehl chsh nicht ändern?

11

Ich habe einen neuen Befehl gelernt, dachte ich zumindest, weil sich dieser Befehl: chshnicht wie beschrieben verhält.

Es wurde beschrieben, wie es funktioniert:

  1. cat /etc/shells um zu wissen, welche Shells installiert sind, können Sie zwischen ihnen wählen.
  2. tun, um echo $SHELLzu wissen, welche Shell Sie verwenden.
  3. Wählen Sie eine der Muscheln und geben Sie ein chsh -s /path/to/shell
  4. Geben Sie das Passwort ein und vergewissern echo $SHELLSie sich, dass Sie sich in einer neuen Shell befinden.

Ich habe dies getan und bei der Eingabe des Passworts keine Fehlermeldung erhalten, aber ich befand mich immer noch in derselben Shell.

% echo $SHELL
/bin/bash
% cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
% chsh -s /bin/sh
Password: 
% echo $SHELL
/bin/bash
Hai
quelle
5
Sie müssen sich zuerst abmelden und erneut anmelden.
Rui F Ribeiro
7
Bitte posten Sie keine Bilder von Terminaltext. Es kann kopiert und in den Text Ihrer Frage eingefügt werden, und es ist wirklich nicht erforderlich, Bilder zu veröffentlichen, es sei denn, Sie zeigen einen grafischen Fehler oder ähnliches.
Sergiy Kolodyazhnyy
Ich habe meinen Beitrag bearbeitet, das Bild gelöscht und stattdessen den Text eingefügt, aber das Bild kam über Nacht zurück.
Hai
@sharkant Es sieht so aus, als ob jemand eine Bearbeitung in einer Überprüfungswarteschlange hatte und diese genehmigt wurde, wodurch Ihr Beitrag nachträglich bearbeitet wurde. Ich dachte, das SE-Editiersystem würde einen neuen Edit nicht mit einem alten überschreiben, aber heh, wer weiß?
Zan Lynx

Antworten:

18

Melden Sie sich ab und wieder an.

Der chshBefehl aktualisiert die /etc/passwdDatei, ändert jedoch weder die aktuelle Shell noch den Wert der $SHELLVariablen in der aktuellen Shell (dies ist nicht möglich). Aus diesem Grund müssen Sie sich erneut anmelden. Sie müssen eine neue Anmeldesitzung starten, damit eine Änderung wirksam wird.

Kusalananda
quelle
Ich verstehe nicht, was eine Login-Shell ist und woher ich weiß, ob ich mich in einer Login-Shell oder einer Art Nicht-Login-Shell befinde. Wie starte ich eine neue Anmeldesitzung?
Hai
1
@sharkant Der Punkt ist, dass die Informationen, die Sie in geändert haben, /etc/passwderst gelesen werden, wenn Sie sich das nächste Mal anmelden. Sie müssen sich vollständig abmelden und erneut anmelden, damit die Änderung wirksam wird. Wenn Sie dies nicht tun, funktioniert auch ein Neustart des Computers.
Kusalananda
1
Ich glaube, ich verstehe Sie diesmal: Der Befehl chsh -s / path / to / shell ändert also nicht sofort die Shell, in der ich mich befinde, sondern einen Eintrag in / etc / passwd, der beim Starten der Shell wirksam wird.
Hai
@sharkant Genau so funktioniert es! Ich bin froh, dass ich endlich dein Missverständnis verstanden habe. Ich werde die Antwort aktualisieren.
Kusalananda
0

Die Verwendung des Dienstprogramms usermod funktionierte in meinem Fall. Laufen auf dem Ubuntu 18.04.

  1. Überprüfen Sie zunächst den aktuellen Wert

grep nameofuser /etc/passwd

  1. ändern Sie es

sudo usermod --shell /bin/bash nameofuser

  1. Überprüfen Sie es

grep nameofuser /etc/passwd

Sandip
quelle