Uruchomienie chsh nie zmienia powłoki


19

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ć?


Czy próbowałeś uruchomić „chsh” bez żadnych argumentów jako zol?
George M

Czy używasz czegoś takiego jak ldap / nis itp.?
Ulrich Dangel

O wiele ważniejsze: dlaczego nie daje ci więcej informacji? Ta wiadomość może być dobra dla doświadczonego sysopa, ale dla większości ludzi jest wręcz niegrzeczna. Mam 5 lat przed tym samym problemem i ludzie zastanawiają się, dlaczego Linux nie spędził ostatnich 20 lat na komputerze.
flurbius

Oczekiwałeś, że twoja skorupa zmieni się natychmiast? Zmienić powłokę logowania się chsh, co oznacza, będziesz musiał zalogować się ponownie.
Kusalananda

Odpowiedzi:


17

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):

$ usermod -s /bin/zsh 

lub

$ sudo usermod -s /bin/zsh zol

Jeśli to nie zadziała, edytuj /etc/passwdręcznie.

sudo vipw
# set zol's shell to /bin/zsh
:wq

6
użyj vipwzamiast, vimponieważ ustawiają one odpowiednie blokady plików.
Ulrich Dangel

„Modyfikacje konta użytkownika nie zostaną zapisane, jeśli otworzyłeś / etc / passwd” - ale dlaczego?
Thanatos,

To też nie działa. Kiedy ponownie uruchamiam maszynę wirtualną z systemem Linux (centos7), teraz jest OK!
WeizhongTu

1

Kiedy uruchomić „chsh -l”, jeśli chcesz zobaczyć:

/usr/bin/zsh
/bin/zsh

Następnie użyj:

chsh -s /usr/bin/zsh

Ostrzeżenie: Komendy zostały uruchomione na Fedorze 25, W Ubuntun opcja „-l” z jest wyłączona.


-ljest dla mnie nieważną opcją. Jestem na Ubuntu 16.04
byxor

Niestety nie podam informacji o dystrybucji, w której działają polecenia. W moim przypadku testowałem na Fedorze 25. Próbuję na Ubuntu i sprawdzam, czy opcja „-l” jest wyłączona.
lourencoccc

Niezależnie od tego chsh -sdziałało idealnie. Dzięki.
byxor

Opcja jest ważna na Manjaro, ale nadal odmawia zmiany powłoki.
Flurbius

0

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:

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

Jeśli jest to poprawne, wyloguj się i zaloguj ponownie, aby zmiana zaczęła obowiązywać.


0

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

# who

i potwierdziło, że rzeczywiście miałem inne otwarte sesje z innych komputerów:

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)

Potem zrobiłem:

pkill -KILL -u dom

Zostałem natychmiast wylogowany i po ponownym zalogowaniu: Voila! Shell został zmieniony

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.