[英]Bash script to install conda leads to "conda: command not found" unless I run `bash` at the command line afterwards
我正在嘗試編寫一個腳本來安裝 miniConda,然后激活一個 conda 環境。
這是代碼的相關部分:
if ! command -v conda --version &> /dev/null
then
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O conda.sh
bash conda.sh -b -p ~/local/miniconda3
rm -f conda.sh
~/local/miniconda3/bin/conda init bash
. ~/.bashrc
fi
conda config --set auto_activate_base false
conda create -yn my_env
eval "$(conda shell.bash hook)"
conda activate my_env
當我運行腳本時,終端上的輸出看起來好像 conda 已成功安裝。 我收到一長串消息,在閱讀完所有消息后,似乎一切都成功了。 (它類似於Solving environment: done
,如果有幫助的話)。
但是,當我在終端上運行conda --version
以測試是否安裝了 conda 時,出現錯誤conda: command not found
如果我遵循這個StackOverflow 答案並在我的終端中輸入bash
,然后從那里運行conda --version
,我可以讓conda --version
按預期工作。
我已經閱讀了很多關於 shell 和 subshell 以及它們與 conda 的關系的答案。 我有一個模糊的想法,即我的問題與在子 shell 中執行的某些事情(?)有關,而不是在父 shell(?)中執行,並且可能與采購~/.bashrc
錯誤(?)有關。 不過,我需要一些有關細節的主要指示。
對於無法提出更好的問題,我深表歉意。 如果我對要問的問題有更具體的想法,我會用谷歌搜索。 :)
注意:我的腳本中的一些內容(如~/local/miniconda3/bin/conda init bash; . ~/.bashrc
)是從其他 StackOverflow 答案中復制的。 我非常仔細地閱讀了對這些 SO 問題的解釋,但不幸的是,我並沒有得到比“如果你這樣做就有效”的一般想法更多的東西。 如果有人回答也能解釋這些台詞是否與我的問題有關,那就太好了。
可能安裝腳本正在向 $PATH 添加某些內容,並且在重新啟動 shell 或重新獲取配置文件之前不會拾取此內容。 您可以在腳本末尾嘗試exec $SHELL
以生成一個新的 shell,它將接收此類更改。
更新用戶的PATH
您可能需要運行hash -r conda
來更新 Bash 的內部命令查找緩存。
簡而言之,您的安裝程序無法更新當前的 shell,除非您要求用戶提供它的source
,或者eval
它打印的任何內容。 也許組織它做前者,但封裝后者。
echo 'PATH=$PATH:/blah-blah' >>~/.bashrc
eval "$(tail -n 1 ~/.bashrc; echo 'hash -r conda')"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.