Ich habe ein Skript /venv/bin/activate
, das einige Umgebungsvariablen setzt. Ich suche nach einer Möglichkeit, zsh zu starten, dieses Skript als Quelle zu verwenden und dann mit einer normalen interaktiven Sitzung fortzufahren. Wenn ich diese Sitzung beende, sollte die Sitzung, zu der ich zurückkehre, nichts über die durchgeführten Umgebungsänderungen wissen activate
. Wie kann ich zsh so aufrufen?
(Dies ist so ziemlich die gleiche Frage wie diese , außer dass ich zsh anstelle von bash verwende.)
zsh
environment-variables
bdesham
quelle
quelle
Antworten:
Verwenden
ZDOTDIR
Erstellen Sie ein (möglicherweise temporäres) Verzeichnis,
/venv_startup
das beispielsweise zwei Dateien enthält: .zshenv und .zshrc. Die .zshenv-Datei besteht auswährend .zshrc sagt
Rufen Sie nun zsh über auf
Dies sagt zsh „statt ausgehend von den .zshenv Sourcing und .zshrc Dateien in
$HOME
, in die Dateien dieser Namen beziehen/venv_startup
statt.“ Da die Versionen in/venv_startup
Quelle diejenigen , in$HOME
wie auch immer, der Nettoeffekt ist , dass die Shell läuftzwischen dem Ausführen Ihres Zshenv und Ihres Zshrc. Danach wird es eine normale interaktive Sitzung sein.
quelle
Wenn das
activate
Skript nur Umgebungsvariablen festlegt, können Sie diese in einer Shell lesen und anschließend eine neue interaktive zsh-Instanz ausführen.Die Wrapper-Shell
sh
kann durch eine beliebige Shell ersetzt werden, die eine Analyse durchführen kann/venv/bin/activate
, auchzsh
wenn dasactivate
Skript mit ihr kompatibel ist.Zusätzlich zu Umgebungsvariablen erbt die interaktive zsh-Instanz die Prozess-ID und einige andere Prozesseinstellungen wie Ressourcenlimits (
ulimit …
) und ignorierte Signale (trap '' …
). Andererseits bleiben die Einstellungen der Shell selbst nicht erhalten: Shell-Variablen (var=…
fallsvar
nicht exportiert), Shell-Optionen (set -…
odershopt …
), Tastenzuordnungen, Alias und Funktionsdefinitionen usw.quelle
activate
nur in die von Ihnen genannten Kategorien fallen).