chsh -s / usr / bin / zsh nie działa

24

Próbuję trwale zmienić moją powłokę na zsh za pomocą chshpolecenia, ale to nie działa.

Zsh jest zainstalowany (przez apt) i działa dobrze, gdy wywołuję go bezpośrednio z terminala zachęty bash. Ale nie mogę domyślnie załadować zsh do terminali, a chsh robi coś dziwnego:

$ echo $SHELL
/bin/bash
$ which zsh
/usr/bin/zsh
$ chsh -s /usr/bin/zsh
Password: 
$ echo $SHELL
/bin/bash
$ grep kurtosis /etc/passwd
kurtosis:x:1000:1000:kurtosis,,,:/home/kurtosis:/usr/bin/zsh

Wygląda na to, że chsh poprawnie zmienił / etc / passwd, ale nie zmienną env zmiennej $ SHELL. W związku z tym nowe terminale zawsze zaczynają się od bash, a nie zsh.

Nie jestem pewien, gdzie szukać rozwiązania tego problemu. .bashrc, nawet jeśli nie jest wywoływany, dopóki nie zostanie określona powłoka? Każda pomoc doceniona.

Kurtosis
źródło
1
Nie możesz zmienić powłoki po ponownym zalogowaniu w systemie?
vine_user
Sprawdź tę odpowiedź .
Pablo A

Odpowiedzi:

34

Musisz wylogować się ponownie, aby zmiany odniosły skutek. Powłoka zdefiniowana w pliku / etc / passwd jest twoją powłoką logowania :-) Więc musisz się w tym celu zalogować.

styczeń
źródło
2
Dzięki. Jestem tak przyzwyczajony, że mogę wprowadzać zmiany w Linuksie bez restartu, po prostu nie przyszło mi to do głowy.
Kurtosis
Musiałem faktycznie zrestartować komputer, aby zadziałał - myślę, że w jakiś sposób łączyło mnie to z istniejącą sesją powłoki.
Chris Kimpton
Podczas korzystania z połączenia ssh, nawet jeśli wyjdziesz, serwer może nie zamknąć połączenia i powłoki do końca. Może być konieczne zabicie procesów (ssh i sh) należących do użytkownika. (Miałem ten problem i łatwo było znaleźć rozwiązanie, ale mimo to musiałem przejść do tego postu, aby zobaczyć, że muszę się wylogować.)
John Hamilton,