Aufruf conda Quelle aktivieren von bash-Skript
Ich versuche zu aktivieren mein conda env über ein bash-Skript. Auch wenn das Skript läuft gut, und mein PFAD wird zu werden verändert in das Skript, es wird immer irgendwie zurücksetzen, nachdem das Skript beendet wird. Ich kann call source activate test
von der cmd-Zeile und es funktioniert gut. Ein Beispiel zusammen mit Ausgabe unten.
Skript:
PycharmProjects/test » cat ./example.sh
echo "before calling source: $PATH"
source activate test
echo "after calling source: $PATH"
Ausgabe:
./example.sh
before calling source: /Use rs/me/miniconda3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin
discarding /Users/me/miniconda3/bin from PATH
prepending /Users/me/miniconda3/envs/test/bin to PATH
after calling source: /Users/me/miniconda3/envs/test/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin`
aber wenn ich echo $PATH
nachdem das Skript beendet ist, können Sie sehen, dass die $PATH
hat sich nicht geändert (d.h. keine /Users/me/miniconda3/envs/test/bin
):
PycharmProjects/test » echo $PATH /Users/me/miniconda3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin
echo $PATH
wo sagt das? Sind Sieexample.sh
als Skript selbst (d.h../example.sh
)? Stattsource
ing (D. H.source example.sh
)?- läuft
example.sh
als Skript (./example.sh). Ich riefecho $PATH
nach Skript fertig ausgeführt, nur um zu zeigen, $PFAD ist tatsächlich nicht geändert. - Es läuft wie ein Skript, das ändert sich halt mit der shell das script ausgeführt. Das ist, warum Sie benötigen, um
source
aktivieren Skript zu machen, gelten für das ausgeführte Skript/shell in den ersten Platz. - Möglich, Duplikat der Wie Quelle virtualenv aktivieren, die in einem Bash-Skript
- Dank der Beschaffung der Skript behebt es.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich die folgenden arbeiten auf Mac OSX läuft ein bash-shell:
Stellen Sie sicher, Sie die Skript ausführbar mit:
Auf neuere Versionen von conda (4.6+), habe ich bemerkt, dass das folgende funktioniert:
eval "$(conda shell.bash hook)"
?conda shell.bash hook
gibt einen string zurück, der bash. Ich nehme an, Sie könnten Recht diese aus, um eine Datei und dann die Quell-Datei, aber es ist einfacher/schneller zu eval es.Siehe den link unten,
digitalocean-wie-zu-Lesen-und-Satz-Umwelt-und-shell-Variablen-auf-einer-linux-vps
unten ist der Ausschnitt aus der website,