Jak ustawić ZSH jako domyślną powłokę?

124

Próbuję ustawić ZSH jako moją domyślną powłokę, jednak wciąż powraca do bash.

Próbowałem tego kodu:

sudo chsh -s $(which zsh)

Próbowałem też:

sudo chsh -s /bin/zsh 

Próbowałem także tych poleceń bez sudo. Wszelkie pomysły na to, co jeszcze muszę zrobić. Podczas uruchamiania ZSH z poziomu basha ładuje się i działa dobrze, ale chciałbym ustawić go jako domyślną powłokę.

Tomek
źródło

Odpowiedzi:

217

Po prostu używając chsh:

chsh -s $(which zsh)

bez sudo powinno działać. Jeśli sudogo użyjesz , zmieni powłokę nie dla pracującego użytkownika, ale dla roota

Na koniec wyloguj się z komputera i zaloguj ponownie .

Rozwiązywanie problemów:

Florian Diesch
źródło
17
Mam ten sam problem i odpowiedź go nie rozwiązuje
Aswin Murugesh
@AswinMurugesh Sprawdź moją odpowiedź
Shailesh Kalamkar
9
możesz także uruchomić sudo chsh -s / bin / zsh nazwa_użytkownika
Micha Roon
15
Uwaga: musiałem zrestartować system, zanim to zadziała.
KevinO,
nie, to nie działało.
Haha TTpro
40

Znalazłem to na forum superużytkownika

Otwórz / etc / passwd:

sudo vi /etc/passwd

Znajdź linię ze swoją nazwą użytkownika:

username:x:1634231:100:Your Name:/home/username:/bin/bash

i zamień bash na zsh:

username:x:1634231:100:Your Name:/home/username:/bin/zsh

Wyloguj się i zaloguj ponownie, aby zmiany odniosły skutek.

Shailesh Kalamkar
źródło
11
Powinieneś być bardzo ostrożny z tym podejściem - zwykle nie jest to najlepszy pomysł, aby się z nimi bawić/etc/passwd
Thomas Ward
Mimo że nie użyłem tej metody, pomogło mi to zweryfikować działaniechsh -s `which zsh`
jchook
HA Tak, totalnie przeleciałem mojego użytkownika. Nie mogę się zalogować.
Mark Carpenter Jr
6

Możesz także to zrobić:

otwórz plik bashrc w swoim ulubionym edytorze

sudo nano ~/.bashrc

następnie dodaj wiersz poniżej góry pliku

exec zsh

Wykona polecenie za każdym razem, gdy ładujesz terminal i uruchamiasz powłokę zsh.

Saddam H.
źródło
13
i spowoduje to również uszkodzenie wszystkich nieinteraktywnych zadań ( scpna przykład).
Jakuje
Przepraszamy za opinię, ale zmieniamy /etc/passwdlub chshsą lepszymi rozwiązaniami i bardziej niezawodnymi.
Timo,
Dzięki, że to zrobiło. @ Timo Zrobiłem zmiany w / etc / passwd i lub chsh, ale moje domyślne nadal wracało do bash. Dodałem exec zsh zgodnie z opublikowaną odpowiedzią i zadziałało.
Stryker
3

Jeśli zsh nie jest / bin / zsh, to chsh nie będzie działać. W Ubuntu jest to / usr / bin / zsh. więc robienie chsh -s /usr/bin/zshlub chsh -s `which zsh`powinno działać. Musisz także ponownie zalogować się do sesji pulpitu.

jbp
źródło
Na moim Ubuntu VPS jest to / bin / zsh
Wilhelm Erasmus
Na moim Ubuntu widzę to zarówno /bin/zshi/usr/bin/zsh
blue_chip
2
Na moim (14.04, z zsh z głównego repozytorium) są dwa zsh i oba są dwuwarstwowymi dowiązaniami symbolicznymi: / usr / bin / zsh -> / etc / alternatives / zsh-usrbin -> / bin / zsh5 i / bin / zsh -> / etc / alternatives / zsh -> / bin / zsh5
wjandrea
1

Miałem problem z uprawnieniami do zmiany powłoki pod bieżącym użytkownikiem, ale dalej mi pomaga (powinieneś ustawić poprawny folder „zsh” na swoim komputerze):

sudo chsh -s /bin/zsh <myUserName>
Rib47
źródło
0

Dziwne, „zaakceptowana” odpowiedź nie działała dla mnie tak, jak ją otrzymałem

chsh: PAM: Authentication failure

Aby rozwiązać ten problem, edytuj plik / etc / passwd i upewnij się, że wskazuje on lokalizację zsh. (Możesz to znaleźć, uruchamiając „which zsh”). W moim przypadku mój użytkownik o nazwie „webmaster” wyglądał tak:

webmaster:x:1001:1001:webmaster,,,:/var/www/webmaster:/usr/bin/zsh
John Crawford
źródło
Uważam, że powinien poprosić o hasło. Otrzymałem ten sam błąd podczas mojej poprzedniej instalacji mięty. Obecny działał jednak dobrze
Wilhelm Erasmus,
Ktoś inny miał ten sam problem i okazało się, że uciekli chsh -s zsh, co spowodowało, że wpis hasła był niepoprawny.
wjandrea
0

Wpisz terminal

sudo chsh -s $(which zsh) root
Valmor Nascimento
źródło