So setzen Sie eine Shell-Umgebung zurück

25

Dieses Problem nervt mich schon seit einiger Zeit und obwohl ich dachte, ich hätte meine Antwort über EnvWatcher gefunden , funktioniert es leider nur mit Bash. Und ich benutze zsh.

Ich würde gerne die Dinge, die env-watcher macht, in geringerem Maße replizieren, aber ich muss wissen, ob es einen Befehl gibt, mit dem ich eine Shell auf den sauberen Startzustand zurücksetzen kann.

Als Beispiel möchte ich den folgenden Workflow haben.

source some-functions
alias another-thing
export SVN_EDITOR=vim
RESET-ZSH # none of the above are valid any more

Gibt es eine solche eingebaute Möglichkeit, oder jage ich Schmetterlinge?

mhitza
quelle

Antworten:

32

Du exec zshkönntest einfach , was dir ein frisches zsh gibt und die init-Funktionen erneut ausführt. Beachten Sie, dass Sie exec zsh -lfür eine Anmeldung zsh benötigen, um den Status "Anmeldeshell" beizubehalten. Ich weiß nicht, wie gut es die Befehlsgeschichte bewahrt (es scheint für mich zu funktionieren, aber wenn Sie mehrere Shells in verschiedenen Terminals verwenden, kann es zu einem "Übersprechen" zwischen den beiden Shells kommen)

Random832
quelle
4
Das würde exportierte Umgebungsvariablen nicht rückgängig machen, oder? (Obwohl alle von Ihrer Init-Datei gesetzten zurückgesetzt würden.)
cjm
Wahrscheinlich würde es nicht. Ich hatte diesen Aspekt nicht berücksichtigt, weil ich Umgebungsvariablen nicht als etwas betrachtete, das Sie vorübergehend in der Shell festgelegt hatten.
Random832
15

Um exportierte Umgebungsvariablen rückgängig zu machen, können Sie den envBefehl verwenden env -i zsh. envFührt den Befehl als Argument aus und -igibt ihm eine saubere Umgebung.

Abhängig von Ihrer Konfiguration müssen Sie möglicherweise -lan zsh /  anhängen , bashum Ihre zu laden .profile, und Sie müssen möglicherweise auch Ihre Umgebung "booten", $HOMEdamit die Shell weiß, wo sich Ihre Startdateien befinden. Insgesamt sieht das so aus:

env -i HOME="$HOME" zsh -l
Chris
quelle
1
Vielleicht brauchst du noch ein paar andere wie TERMund DISPLAY.
G-Man sagt, dass Monica