Nauczyłem się nowego polecenia, przynajmniej tak mi się wydawało, ponieważ to polecenie: chsh
nie zachowuje się tak, jak opisano.
Opisano, że działa w ten sposób:
cat /etc/shells
wiedzieć, które powłoki są zainstalowane, więc możesz wybierać spośród nich.- zrobić
echo $SHELL
, aby wiedzieć, co powłoki używasz. - wybierz jedną z muszli i wpisz
chsh -s /path/to/shell
- wprowadź hasło i sprawdź
echo $SHELL
, czy jesteś w nowej powłoce.
Zrobiłem to i nie otrzymałem komunikatu o błędzie podczas wprowadzania hasła, ale wciąż byłem w tej samej powłoce.
% 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
shell
ubuntu
command-line
rekin
źródło
źródło
Odpowiedzi:
Wyloguj się i zaloguj ponownie.
chsh
Komenda aktualizuje/etc/passwd
plik, ale to nie zmienia bieżącej powłoki ani wartość$SHELL
zmiennej w bieżącej powłoki (nie ma możliwości robienia tego). To jest powód, dla którego musisz się ponownie zalogować; musisz rozpocząć nową sesję logowania, aby zmiana zaczęła obowiązywać.źródło
/etc/passwd
nie są odczytywane, dopóki nie zalogujesz się następnym razem. Musisz wylogować się całkowicie i zalogować ponownie, aby zmiana zaczęła obowiązywać. Jeśli się to nie powiedzie, ponowne uruchomienie komputera będzie również działać.Użycie polecenia narzędzia usermod działało w moim przypadku. Działa na Ubuntu 18.04.
grep nameofuser /etc/passwd
sudo usermod --shell /bin/bash nameofuser
grep nameofuser /etc/passwd
źródło