簡體   English   中英

安裝 conda 的 Bash 腳本會導致“conda: command not found”,除非我之后在命令行運行 `bash`

[英]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 和 subshel​​l 以及它們與 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM