Bash脚本安装Anaconda时提示conda: command not found如何解决?
问题根因
.bashrc的加载限制:绝大多数Linux发行版的~/.bashrc文件开头默认包含非交互式shell检测逻辑,代码类似[ -z "$PS1" ] && return,当运行shell脚本时启动的是无交互提示符的非交互式shell,执行source ~/.bashrc时会触发这个判断直接终止加载,你追加到.bashrc末尾的PATH配置根本不会在脚本运行环境中生效,因此系统找不到conda命令。- 重新登录终端时启动的是带交互提示符的交互式shell,会完整加载
.bashrc的所有配置,PATH变量生效后自然可以正常调用conda。 - 额外注意:你当前脚本的shebang行写错了,现有内容
# !#/bin/bash不符合语法规范,正确写法为#!/bin/bash。
修复方案
不需要依赖source .bashrc加载配置,直接在当前脚本运行环境中手动导入conda的执行路径即可,修改后的完整脚本如下:
#!/bin/bash # 下载Anaconda安装包 wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh # 执行静默安装 bash Anaconda3-*-Linux-x86_64.sh -b # 直接在当前脚本会话中导入conda路径,即时生效 export PATH=~/anaconda3/bin:$PATH # 执行conda相关操作 conda init conda env create -f environment.yml # 写入.bashrc保证后续新启动的终端也能直接调用conda echo 'export PATH=~/anaconda3/bin:$PATH' >> ~/.bashrc
内容的提问来源于stack exchange,提问作者Athena Wisdom
相关产品推荐
相关产品推荐

