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.