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!

vpoola88
źródło

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.

Larsks
źródło
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.

wanghao
źródło
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
phil-ociraptor
źródło
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)

Rahil
źródło
12

W przypadku Bash spróbuj

chsh -s $(which bash)

W przypadku Zsh spróbuj

chsh -s $(which zsh)
jak gdyby
źródło
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

ljcusack
źródło
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.

Paweł Jurczyk
źródło
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.

Randil Tennakoon
źródło
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

Sarah A.
źródło
-5

Możesz łatwo przełączyć się z powrotem na bash, używając polecenia „pa”

Rajani
źródło
pa wyjdzie zsh, ale nie wraca do bash
Cece Dong - MSFT