Wechseln Sie unter OSX von zsh zu bash und wieder zurück?

193

Also lerne ich, mich in Rails zu entwickeln und habe die Kraft von zsh entdeckt. Für einige meiner anderen Aufgaben möchte ich jedoch normalen Bash verwenden. Obwohl sie gleich sind, fühle ich mich in einigen Situationen einfach wohl mit dem Layout von Bash. Wie schalte ich hin und her oder schalte zsh ein und aus? Vielen Dank!

vpoola88
quelle

Antworten:

379

Sie können einfach execIhre aktuelle Shell durch eine neue Shell ersetzen:

Wechseln Sie zu bash:

exec bash

Wechseln Sie zu zsh:

exec zsh

Dies wirkt sich nicht auf neue Terminalfenster oder ähnliches aus, ist jedoch praktisch.

Larsks
quelle
1
Bitte! Wenn Sie mit dieser Antwort zufrieden sind, nehmen Sie sich bitte einen Moment Zeit, um sie als akzeptiert zu markieren, indem Sie das Häkchen links neben der Antwort aktivieren. Vielen Dank!
Larsks
1
Oder rufen Sie einfach zsh auf und wenn Sie fertig sind exit, kehren Sie zur Bash zurück. Die Ausführung erscheint unnötig und unerwünscht.
Chris Seite
Alles hängt davon ab, was Sie von Ihrem Terminalfenster beim Beenden erwarten. Ich finde es selbst unnötig und unerwünscht, eine Unterschale zu starten.
Larsks
2
Wie änderst du die Standardeinstellung? Wenn ich in zsh "exec bash" mache, wird mein bash_profile nicht als Quelle verwendet.
Kalehv
1
Es gibt Zeiten, in denen ich zsh verwenden möchte, und andere Zeiten, in denen es das beeinträchtigt, was ich tun möchte. Das Setzen der Standardeinstellungen ist eine schlechte Idee, daher ist dies die perfekte Lösung !!! ein dickes Lob !!
Bob Roberts
126

Sie können versuchen chsh -s /bin/bash, die Bash als Standard oder chsh -s /bin/zshdie zsh als Standard festzulegen.

Wanghao
quelle
53

Ich wechsle etwas häufig zwischen zsh und bash. Für eine Weile musste ich mein bash_profile bei jedem Switch als Quelle verwenden. Dann habe ich herausgefunden, dass Sie (normalerweise) tun können

exec bash --login

oder nur

exec bash -l
Phil-Ociraptor
quelle
1
Danke Phill, ich habe Thoughtbot / Laptop installiert und es bringt alle meine Konfigurationen durcheinander. Ihr Tipp hilft mir dabei, meine Bash-Umgebung wieder herzustellen.
Seralto
1
Wäre es nützlich, wenn Sie geschrieben hätten, wofür "--login" ist?
Ewoks
Make bash act as if it had been invoked as a login shell (see INVOCATION below). Quelle
Lony
16

wenn es nur ein vorübergehender Wechsel ist

Sie können exec wie oben erwähnt verwenden, jedoch für eine dauerhaftere Lösung.

Sie können chsh -s / bin / bash (um zu bash zu wechseln) und chsh -s / bin / zsh (um zu zsh zu wechseln) verwenden.

Rahil
quelle
12

Versuchen Sie es mit Bash

chsh -s $(which bash)

Versuchen Sie es mit zsh

chsh -s $(which zsh)
als ob
quelle
6

zsh verfügt über einen integrierten Befehl, emulateder verschiedene Shells emulieren kann, indem die entsprechenden Optionen festgelegt werden, obwohl csh niemals vollständig emuliert wird.

emulate bash
perform commands
emulate -R zsh

Das Flag -R stellt alle Optionen auf ihre Standardwerte für diese Shell zurück.

Siehe: zsh Handbuch

ljcusack
quelle
1
Nicht klar, welche Version von Bash es emulieren wird, wird es Bash 4.x emulieren? oder 5.x?
Edgar Aroutiounian
2

Sie sollten nur bashin das Terminal eingeben können, um zu Bash zu wechseln, und dann eingeben zsh, um zu Zsh zu wechseln. Funktioniert zumindest für mich.

Paul Jurczyk
quelle
Das ist noch einfacher.
Andromeda
2
Dies funktioniert, aber jedes Mal, wenn Sie etwas eingeben zshoder bashin eine Unter-Shell wechseln (Unterprozess unter der aktuellen Shell). Sie müssen exit mehrmals eingeben, um zur obersten Shell zurückzukehren.
RichVel
0

In Mac OS Catalina ist die standardmäßige interaktive Shell zsh. So ändern Sie die Shell von bash in zsh:

chsh -s /bin/zsh

Dann müssen Sie Ihr Mac-Passwort eingeben. Beenden Sie das Terminal und öffnen Sie es erneut. Geben Sie den folgenden Befehl ein, um zu überprüfen, ob es erfolgreich in ssh geändert wurde.

echo $SHELL

Wenn das Ergebnis / bin / zsh ist, ist Ihre Aufgabe abgeschlossen.

Geben Sie den folgenden Befehl auf dem Terminal aus, um ihn wieder in Bash zu ändern.

chsh -s /bin/bash

Überprüfen Sie es erneut mit echo $SHELL. Dann sollte das Ergebnis / bin / bash sein.

Randil Tennakoon
quelle
0

Sie können einfach eingeben bashoder wenn Sie immer bash verwenden möchten:

auf "iTerm2"

  • Gehen Sie zu Einstellungen> Profile> Befehl
  • Wählen Sie "Befehl" aus der Dropdown-Liste
  • Art bash

Testen Sie, indem Sie iTerm schließen und erneut öffnen

Sarah A.
quelle
-5

Mit dem Befehl "bye" können Sie ganz einfach zu bash zurückkehren.

Rajani
quelle
Tschüss wird zsh verlassen, aber nicht zurück zu Bash
Cece Dong - MSFT