Jak ustawić moją powłokę w Mac OS X?

21

Wiem, że mogę ustawić „Powłoki otwarte za pomocą” w preferencjach terminalu, ale jestem ciekawy, czy istnieje jakiś systemowy sposób ustawienia tego (podobny do aktualizacji / etc / passwd w niektórych Uniksach).

nic
źródło

Odpowiedzi:

24

Użyj chshnarzędzia w taki sposób:

chsh -s bash

Apple zmieniło chshsię nieco w systemie Mac OS X w porównaniu do tego chsh, co można zobaczyć na przykład w systemie Linux. Można przeczytać o nich w chsh Mac OS X Człowiek strony .

John T.
źródło
I tutaj pomyślałem, że to było coś skomplikowanego z jakimś narzędziem specyficznym dla OSX, heh. Dzięki.
nall
@john - ładnie się nauczył :)
akira
Tak, znałem odpowiedź także ostatnim razem, byłem po prostu pobity! :(
John T
19

Pamiętaj, że możesz zmienić tylko na powłokę wymienioną w /etc/shells . Zwykle jest to w porządku, ale oznacza to, że jeśli chcesz zainstalować Bash 4 (z Homebrew, MacPorts lub skompilować własny), musisz dodać linię /etc/shells. (Wpadłem na to kilka tygodni temu i pomyślałem, że może to pomóc innym wiedzieć ...)

Edycja : Tim Smith wskazuje, że możesz obejść to /etc/shellsograniczenie, jeśli uruchomisz chshjako root sudo. Np. sudo chsh -s /usr/local/bin/my_shell $USERBędzie działać, nawet jeśli my_shellnie jest wymieniony w /etc/shells. Wolę edytować /etc/shells, ale ostatecznie jest to jedno z sudoobu sposobów, ponieważ nie możesz edytować /etc/shellsjako zwykły użytkownik. Więc może sześć z jednego, pół tuzina drugiego.

Telemachus
źródło
Po co zmieniać, /etc/shellsjeśli nie musisz? Dla zachowania zdrowia wolę zachować te same pliki systemowe.
ma11hew28,
@MattDiPasquale Nie jestem pewien, co rozumiesz przez „rozsądek”. /etc/shellsto plik w systemie, który definiuje rozpoznane powłoki. Zmieniam ten plik, ponieważ chcę dodać powłokę do listy rozpoznawanych powłok. Wydaje mi się dość rozsądny.
Telemachus,
Dobra alt. z jakiegoś powodu chsh nie działałoby dla mnie. Mam to ; chsh: bash: non-standard shell
RyBolt
@RyBolt Racja: przyczyną jest prawdopodobnie to, o czym wspominam w odpowiedzi. Nie możesz użyć chshsamego, jeśli próbujesz użyć powłoki, której nie ma na liście /etc/shells.
Telemachus
@Telemachus, właśnie próbowałem zmienić na oryginalną powłokę bash, która była dołączona do mojej domyślnej wersji Mac OSX. Może nie w tym, /etc/shellsco wydaje mi się dziwne.
RyBolt
10

Aby to zrobić za pomocą graficznego interfejsu użytkownika systemu Mac OS X:

  1. Otwórz „Preferencje systemowe”.
  2. Otwórz panel preferencji „Konta” / „Użytkownicy i grupy” i odblokuj panel preferencji, jeśli dotyczy.
  3. Na użytkowniku, którego chcesz zmienić powłokę, controlkliknij + lub kliknij prawym przyciskiem myszy użytkownika i wybierz „Opcje zaawansowane…”
  4. Tam, gdzie jest napisane „Login Shell:” zmień to na shell, którego chcesz używać.

Warto zauważyć, że w tej lokalizacji możesz zmienić katalog domowy, UUID, identyfikator użytkownika, identyfikator grupy i krótką nazwę, jeśli nie czujesz się komfortowo z terminalem. Jest to podobne pytanie znajduje się tutaj , jak również.

Chealion
źródło
5

Korzystając z powyższych odpowiedzi, otrzymałem komunikat o błędzie:

$ chsh -s zsh
Changing shell for myuser.
Password for myuser:
chsh: zsh: non-standard shell

Aby obejść ten problem:

sudo chsh -s zsh $(whoami)

whoami w podpowłoce jest zmiana powłoki dla użytkownika, a nie katalogu głównego.

Jeszcze jedno, jeśli używasz homebrew. Po uruchomieniu komend jako root (za pomocą sudo), zsh wskazuje na / bin / zsh, który jest dostarczany z OSX i może być nieaktualny. Aby skorzystać z aktualnej wersji zainstalowanej przez Homebrew, użyj następujących opcji:

sudo chsh -s $(which zsh) $(whoami)
phil pirozhkov
źródło