Jak zmienić powłokę logowania w Mac OS X z bash na zsh?

90

Próbuję zmienić Powłokę logowania systemu Mac OS X z bashna zsh. Widzę, że jest to możliwe w Mac OS X Leopard , ale dla OS X Lion nie mogę znaleźć sposobu. Naprawdę mam nadzieję, że można zmienić powłokę logowania z bash na coś innego. Nie jestem do końca pewien, gdzie szukać.

Idlecool
źródło
Po zmianie powłoki na zsh nadal musiałem uruchamiać zsh ręcznie. Wylogowanie nie pomogło. Następnie zmieniłem zsh na najwyższą powłokę logowania. Wylogowałem się i już było.
1
Jeśli nic więcej, zawsze możesz zmodyfikować plik .bashrc, aby znaleźć i uruchomić zsh. if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi. Wskazówka, modyfikując skrypty startowe powłoki, upewnij się, że shell działa, i uruchom nowy w innym oknie - jeśli go zepsujesz, nadal masz łatwe miejsce, aby go naprawić.
Dan Pritts

Odpowiedzi:

101

Możesz zmienić powłokę użytkownika za pomocą następującego polecenia:

chsh -s /bin/zsh

Uwaga: Aby zmienić ją na niestandardową powłokę, upewnij się, że jej ścieżka została dodana do /etc/shellspliku.

Spiff
źródło
4
Zainstalowałem nowszą wersję zsh z Homebrew, która wstawiła zsh /usr/local/bin/zsh. Niestety, chsh na to nie pozwala chsh: /usr/local/bin/zsh: non-standard shell. Odpowiedź Daniela Becka jest odpowiednim rozwiązaniem w tym przypadku.
adam_0
43
Jeśli otrzymujesz problemy z niestandardowymi muszli, myślę, że powinieneś być w stanie dodać /usr/local/bin/zshdo /etc/shellsi powinno rozwiązać ten problem.
Mike Meyers
13
Informacje o instalacji homeshrew zsh naprawdę polecają dodanie go do / etc / shells: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells.
George
Czasami nie działa. Odpowiedź @ franka to zapewnia
oliverbarnes
1
@Awesome_girl Domyślnie /etc/shellsjest własnością roota (superużytkownika) i jest do zapisu tylko. Możesz na przykład użyć sudo vi /etc/shellspolecenia use sudo( s uper u ser do ) do uruchomienia viedytora w celu edycji /etc/shells. Właśnie przetestowałem na moim systemie i potwierdziłem, że NIE jest on chroniony przez System Integrity Protection, więc powinieneś być w stanie edytować go jako root bez przeskakiwania przez obręcze, aby wyłączyć SIP.
Spiff
54

Co zabawne, ta sama metoda, do której prowadzi łącze w pytaniu, nadal działa w systemie OS X Lion i Sierra (10.12). Jedyna różnica: okienko preferencji nosi nazwę Użytkownicy i grupy zamiast Kont .

  1. Otwórz „Preferencje systemowe” → „Użytkownicy i grupy”.
  2. Jeśli ikona kłódki nie jest już odblokowana, kliknij ikonę kłódki i uwierzytelnij się.
  3. Kliknij kontekstowo użytkownika na liście nazw użytkowników (przytrzymaj Controlklawisz podczas klikania lub kliknij prawym przyciskiem myszy prawym przyciskiem myszy dwoma przyciskami).
  4. W menu kontekstowym wybierz „Opcje zaawansowane…”.
  5. Wybierz „Powłokę logowania” w wyświetlonym arkuszu.

Uwaga u góry ekranu „Opcje zaawansowane” twierdzi, że musisz ponownie uruchomić, aby zmiana zaczęła obowiązywać, ale tak naprawdę po prostu musisz się wylogować i ponownie zalogować.

wprowadź opis zdjęcia tutaj

Daniel Beck
źródło
1
Potwierdzono, że działa to w Mountain Lion, a także działa z „niestandardowymi powłokami”, które możesz zainstalować samodzielnie (lub zainstalować Homebrew).
adam_0
2
Potwierdzono, że nadal pracuje w 10.10 Yosemite.
ecnepsnai
4
kliknij prawym przyciskiem myszy nazwę użytkownika, aby wyświetlić menu zawierające „opcje zaawansowane”. Znalezienie zajęło mi kilka minut.
pdwalker
1
Po co zmuszać kogoś do opuszczenia witryny w celu zebrania wszystkich informacji przed uzyskaniem odpowiedzi? Stąd komentarz na wypadek, gdyby ktoś inny przyjął to samo założenie, że odpowiedź jest tutaj, a nie tu i tam.
pdwalker
1
@jvriesem Właściwie to robi. Domyślam się, że pominąłeś krok 2.
Daniel Beck
11

Lub:

sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
szczery
źródło
3
Czy możesz wyjaśnić, dlaczego to odpowiada na pytanie?
ChrisF,
Pamiętaj, aby uruchomić to później brew install zsh .
mmell
3
Uważaj również, aby ścieżka zsh zainstalowanego przez homebrew była inna. Robię to jako:sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
metakermit
1
OSTRZEŻENIE: Spowoduje to uszkodzenie powłoki, jeśli skopiujesz ją / wkleisz bez uprzedniego sprawdzenia ścieżki zsh. Zamiast tego rób to, co powiedział metakermit.
radixhound
1

Jeśli ktoś zastanawia się nad tym samym problemem na macOS Sierra i następujące polecenie pozwoliło mi zmienić powłokę bez problemów:

chpass -s /usr/local/bin/zsh
Maxim Ligus
źródło
1
To powiela inną odpowiedź i nie dodaje żadnej nowej treści. Nie publikuj odpowiedzi, chyba że masz coś nowego do dodania. „chfn i chsh są synonimami chpass.”
DavidPostill