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ę.

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:


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.


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.


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.


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>

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

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

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.