Jak ustawić domyślną powłokę na komputerze Mac?

190

Nie lubię przepisywać ryb za każdym razem, gdy uruchamiam terminal. Chcę fishdomyślnie włączyć. Jak ustawić skorupkę ryby jako domyślną powłokę na komputerze Mac?

Léo Léopold Hertz 준영
źródło

Odpowiedzi:

31

Dotyczą one MacOS Sierra 10.12.5 (16F73) i prawdopodobnie niektórych innych najnowszych i przyszłych wersji MacOS.

  1. chshnie wystarczy, aby zmienić domyślną powłokę. Upewnij się, że naciśniesz Command+, ,gdy terminal jest otwarty, i zmienisz opcję „Otwarte powłoki z” na „Domyślna powłoka logowania”.

  2. W przypadku bash, upewnij się, że wykonałeś, echo $BASH_VERSIONaby potwierdzić, że używasz zamierzonej wersji bash. bash --versionnie podaje poprawnych informacji.

Tushar Vazirani
źródło
3
Ponieważ ta odpowiedź jest zaakceptowana, być może zamiast być uzupełnieniem przypuszczalnie do innej odpowiedzi , można uczynić z niej kompletną odpowiedź, zawierającą dodatek.
Jason R. Coombs
Odpowiedzi na to teraz znajdują się w dokumentacji .
reergymerej
@ JasonR.Coombs Gotowe.
Tushar Vazirani
1
Aktualizacja: Możemy teraz ustawić domyślną powłokę w Preferencesod Terminal.app . Zobacz tę odpowiedź autor: Pankaj.
Basil Bourque
Wspomniałem skrót klawiszowy do preferencji.
Tushar Vazirani
242

1. sudo nano / etc / shells wprowadź opis zdjęcia tutaj

2. dodaj / usr / local / bin / fish do swojej listy muszli wprowadź opis zdjęcia tutaj

3. chsh -s / usr / local / bin / fish

użytkownik391339
źródło
2
I powinieneś zmienić Shell open with: Default login shellustawienia Terminal.app
Tichonow Alexander
77

Możesz użyć chsh, aby zmienić powłokę użytkownika.

Uruchom następujący kod, na przykład, aby zmienić powłokę na Zsh

chsh -s /bin/zsh

Jak opisano w podręczniku systemowym, a przez Lorin, jeśli powłoka nie jest znana przez system operacyjny, trzeba dodać go do swojej znanej listy: /etc/shells.

Aif
źródło
13
Wypróbowałem i otrzymałem chsh: /usr/local/bin/fish: non-standard shell Rozwiązanie polegało na dodaniu go do / etc / shells zgodnie z opisem poniżej @ lorin-hochstein odpowiedź
lmsurprenant
dbright @ PowerMac: ~ $ chsh -s / Users / dbright / sys / bin / bash Zmiana powłoki dla dbright. Hasło do dbright: chsh: / Users / dbright / sys / bin / bash: niestandardowa powłoka dbright @ PowerMac: ~ $ ls -l / etc / shells -rw-r - r-- 1 koło root 179 września 23 2007 / etc / shells
don bright
Hum, ostatnio próbowałem chsh, który działał jako prosty użytkownik (bez -stego). Spróbuję wkrótce.
Aif
73

Z terminala:

  1. Dodaj Fish do /etc/shells, który będzie wymagał hasła administracyjnego:

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. Ustaw Fish jako domyślną powłokę dzięki chsh:

    chsh -s /usr/local/bin/fish
    

Z Preferencji systemowych:

  1. Użytkownik i grupy → kliknij, przytrzymując klawisz Ctrl, Bieżący użytkownik → Opcje zaawansowane ...

  2. Zmień powłokę logowania na /usr/local/bin/fish

    powłoka logowania

  3. Naciśnij OK, wyloguj się i zaloguj ponownie

Paolo Moretti
źródło
8
Musiałem dokonać drobnych sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
poprawek w
Jeszcze jeden sposób na zrobienie tego samego, o czym wspomniał echo /usr/local/bin/fish | sudo tee -a /etc/shells
@purpletonic
20

Oto inny sposób, aby to zrobić:

Zakładając, że zainstalowałeś go z MacPorts, co można zrobić, wykonując:

sudo port install fish

Twoja muszla będzie się znajdować w /opt/local/bin/fish.

Musisz powiedzieć OSX, że jest to poprawna powłoka. Aby to zrobić, dodaj tę ścieżkę na końcu /etc/shellspliku.

Po wykonaniu tej czynności możesz zmienić powłokę, przechodząc do Preferencji systemowych -> Konta. Kliknij Blokada, aby zezwolić na zmiany. Kliknij konto prawym przyciskiem myszy i wybierz „Opcje zaawansowane ...”. W polu „Powłoka logowania” dodaj ścieżkę do ryb.

Lorin Hochstein
źródło
dzięki! działało to świetnie i sprawiło, że ryby stały się moim domyślnym terminalem wszędzie. po prostu zmieniając go w terminalu, jak jedna z pozostałych odpowiedzi, powodował, że terminal pytał mnie za każdym razem, gdy zamykałem okno, a chsh po prostu nie działało dla mnie.
jasongregori
12

Jedyne, co działało dla mnie, to połączenie wszystkich tych metod.

  1. Najpierw musiałem dodać rybę do /etc/shellspliku

  2. Potem pobiegłem chsh -s /usr/local/bin/fish

  3. Na koniec wpisałem Command+ ,i dodałem /usr/local/bin/fishtam domyślną ścieżkę

Dopiero po wykonaniu wszystkich trzech czynności ryby zaczęły pojawiać się jako domyślne dla nowych okien terminali.

osobliwy
źródło
9

Mac OS X: jak zmienić powłokę terminala

Gumbo
źródło
2
Radzę preferować takie podejście i nie zmieniać domyślnej powłoki OSX. Miałem „nieskończone instalacje” na iWorks - na przykład - ze względu na skrypty instalacyjne, które zakładają, że masz powłokę kompatybilną z SH (w moim przypadku nie dotyczy to ZSH).
Cyber ​​Oliveira,
8

Terminal.app > Preferences> General> Shells open with:>/bin/fish

  1. Otwórz terminal i naciśnij command+, (przecinek). Otworzy się okno preferencji.
  2. Pierwsza zakładka to „Ogólne”.
  3. Znajdź ustawienie „Otwarte powłoki z” i wybierz drugą opcję, która wymaga pełnej ścieżki do powłoki.
  4. Wklej link do polecenia ryby, którym ogólnie jest /usr/local/bin/fish .

Zobacz ten zrzut ekranu, gdzie zshjest ustawiony jako domyślny.

zrzut ekranu wprowadzania <code> / bin / zsh </code> w preferencjach Terminal.app

Używam macOS Sierra . Działa również w systemie macOS Mojave .

Pankaj
źródło
2
W końcu! Rozwiązanie, które działa dla użytkownika innego niż sudo!
Ébe Isaac
7

W systemie macOS Mojave musiałem wykonać następujące czynności (na przykładzie zsh):

brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)
MagicDude4Eva
źródło
Uwaga: Możesz użyć tej dokładnej metody, aby również uzyskać najnowszą wersję bash. stackoverflow.com/a/55011144/117471 Sam wymyśliłem prawie dokładnie ten sam kod.
Bruno Bronosky,
1
Nie trzeba instalować zsh. Już dostępny na macOS Mojave. W pakiecie na Mojave i domyślnie w Catalina.
Basil Bourque
5

Jak uzyskać najnowszą wersję bash na nowoczesnym systemie macOS (testowany na Mojave).

brew install bash
which bash | sudo tee -a /etc/shells
chsh -s $(which bash)

Następnie jesteś gotowy na uzupełnienie karty stylu vim, która jest dostępna tylko w bash> = 4 (aktualna wersja brewto 5.0.2

# If there are multiple matches for completion, Tab should cycle through them
bind 'TAB':menu-complete

# Display a list of the matching files
bind "set show-all-if-ambiguous on"

# Perform partial completion on the first Tab press,
# only start cycling full results on the second Tab press
bind "set menu-complete-display-prefix on"
Bruno Bronosky
źródło
4

chshProgram pozwala zmienić domyślną powłokę. Będzie potrzebował pełnej ścieżki do pliku wykonywalnego, więc jeśli twoja powłoka jest fish, będzie chciał, abyś podał dane wyjściowe podane podczas pisania which fish.

Zobaczysz linię zaczynającą się od „ Shell:”. Jeśli nigdy go nie edytowałeś, najprawdopodobniej mówi „ Shell: /bin/bash”. Zastąp tę /bin/bashścieżkę ścieżką do żądanej powłoki.

rejj
źródło
4

W terminalu otwórz preferencje terminala, używając Command+ ,.

Na karcie Ustawienia wybierz jeden z motywów i wybierz kartę powłoki po prawej stronie.

Możesz ustawić polecenie autostartu fish.

świętość
źródło
4

Ta praca dla mnie na świeżej instalacji Mac OSX (Sierra):

  1. Zdefiniuj bieżącego użytkownika jako właściciela powłok
sudo chown $(whoami) /etc/shells
  1. Dodaj Fish do / etc / shells
sudo echo /usr/local/bin/fish >> /etc/shells
  1. Ustaw Fish jako domyślną powłokę za pomocą chsh
chsh -s /usr/local/bin/fish
  1. Przedefiniuj roota jako właściciela muszli
sudo chown root /etc/shells
ZecKa
źródło
2
heimdall:~ leeg$ dscl
Entering interactive mode... (type "help" for commands)
 > cd /Local/Default/Users/
/Local/Default/Users > read <<YOUR_USER>>
[...]
UserShell: /bin/bash
/Local/Default/Users >

wystarczy zmienić tę wartość (za pomocą polecenia write dscl).

Ordiel
źródło
Pojawia się ten błąd, gdy uruchamiam odczyt leeg: <dscl_cmd> Błąd DS: -14136 (eDSRecordNotFound)
Léo Léopold Hertz z
1
Tak. To dlatego, że leeg to moja nazwa użytkownika, a nie twoja: P
0

W przypadku problemów z innymi sposobami działał na Mac Mojave, ale ogólnie powinien działać.

which fish

dodaj ścieżkę wyjściową do „Preferencji systemowych> Użytkownicy i grupy> użytkownik kliknij prawym przyciskiem myszy, Opcje zaawansowane” Wklej wynik, z którego do „Powłoki logowania:”

SLuck
źródło
0

Aby zmienić domyślną powłokę na komputerze Mac, wykonaj następujące czynności:

chsh -s <name-of-shell>

Lista muszli do wyboru to:

  1. / bin / bash
  2. / bin / csh
  3. / bin / dash
  4. / bin / ksh
  5. / bin / sh
  6. / bin / tcsh
  7. / bin / zsh

więc jeśli chcesz zmienić z powłoki na / bin / zsh, twoje polecenie będzie wyglądać następująco:

chsh -s /bin/zsh

możesz zobaczyć wszystkie dostępne powłoki w systemie, uruchamiając:

cat /etc/shells
Chavez Harris
źródło