Sto provando ad attivare il mio conda env tramite uno script di bash. Anche se lo script funziona correttamente e il mio PATH sembra essere cambiato all'interno dello script, viene ripristinato in qualche modo dopo che lo script termina. Posso chiamare source activate test
dalla riga cmd e funziona perfettamente. Un esempio insieme all'output qui sotto.chiamando la sorgente di conda attiva da script di bash
script:
PycharmProjects/test » cat ./example.sh echo "before calling source: $PATH" source activate test echo "after calling source: $PATH"
uscita:
./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`
ma se echo $PATH
dopo lo script termina, si può vedere che la $PATH
non è cambiato (cioè non /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' ** dove ** lo dice? Stai eseguendo 'example.sh' come uno script stesso (ad esempio'./Example.sh')? Invece di 'source'ing it (ad esempio' source example.sh')? –
in esecuzione 'example.sh' come script (./example.sh). Ho chiamato 'echo $ PATH' dopo che lo script ha finito di funzionare, solo per mostrare $ PATH non è effettivamente cambiato. –
Eseguendolo come uno script, le modifiche si interrompono con la shell che esegue lo script. Ecco perché è necessario "dare origine" allo script attivo per farlo applicare allo script/shell in esecuzione. –