Bash 激活环境时,Conda不设置路径
启动新shell时,未配置PATH环境变量 对。目录Bash 激活环境时,Conda不设置路径,bash,anaconda,conda,tmux,Bash,Anaconda,Conda,Tmux,启动新shell时,未配置PATH环境变量 对。目录anaconda3/bin或miniconda3/bin位于第二位 仅位置,而不是路径变量中的第一个位置。这可能是 通过conda停用并再次激活解决 这个问题已经被问了好几次(例如和) 但现有的问题要么非常陈旧,要么集中在使用 源激活环境名称。总之,我没有找到解决我问题的答案 问题 当我启动一个新的shell时,基本环境被激活。相关 my.bashrc中的代码片段如下所示: condaexe=“/home/$USER/.miniconda3/b
anaconda3/bin
或miniconda3/bin
位于第二位
仅位置,而不是路径变量中的第一个位置。这可能是
通过conda停用
并再次激活解决
这个问题已经被问了好几次(例如和)
但现有的问题要么非常陈旧,要么集中在使用
源激活环境名称
。总之,我没有找到解决我问题的答案
问题
当我启动一个新的shell时,基本环境被激活。相关
my.bashrc
中的代码片段如下所示:
condaexe=“/home/$USER/.miniconda3/bin/conda”
condash=“/home/$USER/.miniconda3/etc/profile.d/conda.sh”
__conda_setup=“$($condaexe'shell.bash'hook'2>/dev/null)”
#shellcheck禁用=SC2181
如果[[$?-eq 0]]
然后
评估“$\uuu conda\u设置”
elif[-f“$condash”]]
然后
来源“$condash”
fi
取消设置条件设置条件
然后,路径变量定义如下:
(基本)$echo$PATH
/home/user/.local/bin:/home/user/.miniconda3/bin:/home/user/.miniconda3/condabin:/home/user/workspace/my project/:/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/games:/usr/local/games:/snap/bin
(基本)$conda deactivate&&echo$PATH
/home/user/.local/bin:/home/user/.miniconda3/condabin:/home/user/workspace/my-project/:/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/usr/games:/usr/local/games:/snap/bin
$conda激活基本路径(&echo)$PATH
/home/user/.miniconda3/bin:/home/user/.local/bin:/home/user/.miniconda3/condabin:/home/user/workspace/my project/:/home/user/.local/bin:/usr/local/sbin:/usr/sbin:/usr/sbin:/usr/games:/usr/local/games:/snap/bin
(基数)$
注意,/home/user/.local/bin
包含两次;前前后后
在Miniconda3目录之后
我试图通过在.bashrc
中添加以下代码片段来调试该问题:
echo$CONDA\u提示符\u修饰符
echo$PATH
这就产生了
(base)
/home/user/.miniconda3/bin:/home/user/.miniconda3/condabin:/home/user/workspace/my-project:/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
这很好,但不知何故,在.bashrc
之后进行了修改。
注意这里只包含一次/home/user/.local/bin
这是怎么回事?如何设置Bash/Conda以获得正确定义的路径
环境变量?我在原始问题中遗漏了三个部分,它们是解决方案的关键 首先,我在TMux中运行所有shell。第二,TMux源于
.profile
。第三,在.profile
中,前面提到的~/.local/bin
等一些本地目录被盲目地添加到路径前面
综上所述,以上所有奇怪的行为都是有道理的。尤其是路径在~/.bashrc
的末尾是正确的,但在shell中不是这样的,这一点现在很明显;它被~/.profile
修改了
有三种解决方案:
~/.profile
似乎无法将TMux配置为仅源代码
~/.bashrc
(,),尽管这里也存在一些解决方法。这与Bash init文件有关。默认情况下,~/.bashrc
用于交互式、非登录的shell。它不会在登录shell中获得。默认情况下,Tmux使用登录shell。因此,由tmux启动的shell跳过~/.bashrc
默认命令
shell命令
默认值是一个空字符串,它指示tmux使用defaultshell
选项的值创建登录shell
Bash的Init文件
/etc/profile
~/.bash\u配置文件
,~/.bash\u登录
,~/.profile
(仅存在第一个)/etc/bash.bashrc
(某些Linux;不在Mac OS X上)~/.bashrc
$BASH\u ENV中的源文件
~/.bashrc
的加载要求更改为仅交互式,这正是像Ubuntu这样的发行版正在做的
# write content below into ~/.profile, or ~/.bash_profile
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
这应该是你想要的解决方案。我建议每一位Bash用户在配置文件中都这样设置
参考资料
MANTMUX
.bash\u配置文件
(例如bash-l
)?conda init-vv-d
输出什么?它是否建议进一步修改.bashrc
?另外,您是否自己在.bashrc中编写了该部分的代码它与我以前见过的标准模板不匹配。conda info
的输出可能有助于包括在内。感谢您的评论。你提到的.bash\u profile
让我走上了正确的道路。