Ich habe mich umgesehen und nach einer Antwort auf diese Frage gebissen, aber ich scheine sie nicht zu finden (was seltsam ist).
Meine Frage ist, gibt es eine einfache Möglichkeit, die Bash-Sitzung innerhalb des Terminals auf dem Mac neu zu starten. Ich möchte nur das gleiche Verhalten, als ob ich die Terminalanwendung geschlossen und erneut gestartet hätte (alle Variablen zurückgesetzt, Quelle von .bash_profile usw.).
Ich weiß, wie man .bash_profile erzeugt, aber das ist nicht das, was ich will. Einer der Gründe, warum ich dies tun möchte, ist, dass ein Plugin für meine Bash-Eingabeaufforderung Code enthält, der verhindert, dass Farben mehrmals geladen werden. Daher werden die Farbvariablen bei der Beschaffung von .bash_profile nicht neu geladen, und ich muss die Terminalanwendung neu starten, damit die Änderungen wirksam werden.
exec bash
nur dann neu? Können Sie auch genau erklären, was der Befehl exec tut und welche Optionen er bietet? Vielen Dank!man bash
, die letzte Instanz der Zeichenfolge SHELL BUILTIN COMMANDS und dann nach unten scrollen zu exec finden. Kurz gesagt,-c
wenn Sie das Flag übergeben, wird es ohne Umgebungsvariablen ausgeführt (die möglicherweise für Ihre Zwecke erforderlich sind, ich weiß nicht), und die anderen Argumente -l und -a sind wahrscheinlich nicht die gewünschten Dinge (sie scheinen historisch zu sein) undurchsichtige und spezifische Merkmale). Sie können exec auch zum Öffnen neuer Dateideskriptoren in der aktuellen Shell verwenden, wenn Sie den Befehl weglassen.-l
Hier ist ein Argument zum Bashen und lässt es sich einfach wie eine Login-Shell verhalten. Das Öffnen von Dateideskriptoren in der aktuellen Shell hat nichts mit Ihrer Frage zu tun, aber Sie könnenexec 4<>test.txt
zum Beispiel festlegen, dass Dateideskriptor 4 auf test.txt verweist. Dann können Sie in der restlichen Shell dieecho test>&4
Ausgabe in die Datei test.txt ausführen.Die akzeptierte Antwort ist großartig für eine Shell, die bash verwendet. Dies wurde auch vom OP gefragt. Ich verwende jedoch Terminal unter macOS mit einer nicht standardmäßigen Shell (zsh) und das Ausführen des Befehls hat
exec bash
offensichtlich nicht den gewünschten Effekt : es startet Bash anstelle meiner Standard-Shell.Der umgebungsunabhängige Befehl
exec $SHELL
verwendet also die Umgebungsvariable$SHELL
, in der die Standard-Shell für den Benutzer gespeichert ist.Beachten Sie auch, dass Apple in macOS Catalina bash durch zsh ersetzt, damit das OP entweder ausgeführt werden kann
exec zsh
oderexec $SHELL
nach dem Update auf macOS 10.15.quelle