Chcę zmienić moją powłokę z bash na zsh.
Próbowałem uruchomić następujące podczas logowania jako użytkownik 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
Co może być nie tak? Jak mogę to naprawić?
chsh
, co oznacza, będziesz musiał zalogować się ponownie.Odpowiedzi:
Modyfikacje konta użytkownika nie zostaną zapisane, jeśli otworzyłeś / etc / passwd (vim / etc / passwd) podczas próby zmiany informacji.
Alternatywnie: spróbuj z usermod (as zol):
lub
Jeśli to nie zadziała, edytuj
/etc/passwd
ręcznie.źródło
vipw
zamiast,vim
ponieważ ustawiają one odpowiednie blokady plików.Kiedy uruchomić „chsh -l”, jeśli chcesz zobaczyć:
Następnie użyj:
Ostrzeżenie: Komendy zostały uruchomione na Fedorze 25, W Ubuntun opcja „-l” z jest wyłączona.
źródło
-l
jest dla mnie nieważną opcją. Jestem na Ubuntu 16.04chsh -s
działało idealnie. Dzięki.Jeśli widzisz
chsh: Shell not changed.
, może to oznaczać, że skorupa została już zmieniona.Sprawdź, która powłoka jest na liście:
Jeśli jest to poprawne, wyloguj się i zaloguj ponownie, aby zmiana zaczęła obowiązywać.
źródło
Właśnie na to wpadłem. Bez względu na to, co zrobiłem, zalogowanie się i wylogowanie nie zmieniłoby mojej powłoki, ale była ona wymieniona w / etc / shells i / etc / passwd.
w końcu dotarło do mnie: Może jestem zalogowany podczas innej sesji?
Więc zrobiłem
i potwierdziło, że rzeczywiście miałem inne otwarte sesje z innych komputerów:
Potem zrobiłem:
Zostałem natychmiast wylogowany i po ponownym zalogowaniu: Voila! Shell został zmieniony
źródło