Zmieniasz z zsh na bash na OSX i znów?


194

Uczę się więc rozwijać w Railsach i odkryłem moc zsh. Jednak w przypadku niektórych innych moich zadań chcę używać normalnego Basha. Chociaż są takie same, po prostu czuję się swobodnie z układaniem bashu w niektórych sytuacjach. Jak przełączać się w przód iw tył lub włączać i wyłączać Zsh? Dzięki!

Odpowiedzi:


381

Możesz po prostu execzastąpić obecną powłokę nową powłoką:

Przełącz na bash:

exec bash

Przełącz na zsh:

exec zsh

Nie wpłynie to na nowe okna terminali ani nic, ale jest to wygodne.


1
Nie ma za co! Jeśli jesteś zadowolony z tej odpowiedzi, poświęć chwilę, aby oznaczyć ją jako zaakceptowaną, zaznaczając znacznik wyboru po lewej stronie odpowiedzi. Dzięki!
larsks

1
Lub po prostu wywołaj Zsh, a kiedy skończysz, exitaby wrócić do bash. Wykonanie tego wydaje się niepotrzebne i niepożądane.
Chris Page

Wszystko zależy od tego, czego oczekujesz od okna terminala po wyjściu. Uważam, że założenie podpowłoki jest niepotrzebne i niepożądane.
larsks

2
Jak zmienić wartość domyślną? Ponadto, gdy wykonuję „exec bash” w Zsh, nie pobiera mojego pliku bash_profile.
kalehv

1
Są chwile, kiedy chcę używać Zsh, a innym razem, gdy zakłóca to, co chcę robić. Ustawienie domyślnej wartości tam iz powrotem jest złym pomysłem, więc jest to idealne rozwiązanie !!! sława!!
Bob Roberts,

126

możesz spróbować chsh -s /bin/bashustawić bash jako domyślny lub chsh -s /bin/zshustawić zsh jako domyślny.


54

Niekiedy dość często przełączam się między zsh a bash. Przez jakiś czas musiałem pozyskiwać mój profil bash dla każdego przełącznika. Potem dowiedziałem się, że możesz (zwykle) zrobić

exec bash --login

Lub tylko

exec bash -l

1
Dzięki Phill, zainstalowałem thinkbota / laptopa i to zepsuło wszystkie moje konfiguracje. Twoja wskazówka pomaga odzyskać środowisko bash.
Seralto,

1
Przydałby ci się napisany po co „--login”?
Ewoks

Make bash act as if it had been invoked as a login shell (see INVOCATION below). Źródło
lony

16

jeśli jest to tylko tymczasowa zmiana

możesz użyć exec, jak wspomniano powyżej, ale dla bardziej trwałego rozwiązania.

możesz użyć chsh -s / bin / bash (aby przełączyć na bash) i chsh -s / bin / zsh (aby przełączyć na zsh)


12

W przypadku Bash spróbuj

chsh -s $(which bash)

W przypadku Zsh spróbuj

chsh -s $(which zsh)

6

zsh ma wbudowane polecenie, emulatektóre może emulować różne powłoki, ustawiając odpowiednie opcje, chociaż csh nigdy nie będzie w pełni emulowany.

emulate bash
perform commands
emulate -R zsh

Flaga -R przywraca wszystkie opcje do wartości domyślnych dla tej powłoki.

Zobacz: instrukcja zsh


1
Nie jest jasne, jaką wersję bash będzie emulować, czy będzie emulować bash 4.x? lub 5.x?
Edgar Aroutiounian

2

Powinieneś być w stanie po prostu wpisać bashw terminalu, aby przełączyć się na bash, a następnie wpisać, zshaby przełączyć się na zsh. Działa przynajmniej dla mnie.


To jest jeszcze prostsze.
andromeda

2
Działa to, ale za każdym razem, gdy piszesz zshlub bashwchodzisz do podpowłoki (podproces pod bieżącą powłoką). Będziesz musiał wpisać exit kilka razy, aby powrócić do najwyższej powłoki.
RichVel

1

W Mac OS Catalina domyślną powłoką interaktywną jest zsh. Aby zmienić powłokę na zsh z bash:

chsh -s /bin/zsh

Następnie musisz wprowadzić hasło do komputera Mac. Zamknij terminal i otwórz go ponownie. Aby sprawdzić, czy zmieniono go pomyślnie na ssh, wydaj następujące polecenie.

echo $SHELL

Jeśli wynikiem jest / bin / zsh, twoje zadanie jest zakończone.

Aby zmienić go z powrotem na bash, wydaj następujące polecenie na terminalu.

chsh -s /bin/bash

Sprawdź to ponownie za pomocą echo $SHELL. Zatem wynikiem powinno być / bin / bash.


0

możesz po prostu wpisać bashlub jeśli zawsze chcesz użyć bash:

na temat „iTerm2”

  • Przejdź do preferencji> Profile> Polecenie
  • Wybierz „Polecenie” z menu rozwijanego
  • Rodzaj bash

Przetestuj, zamykając iTerm i otwórz go ponownie


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.