Bash 激活环境时,Conda不设置路径

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

启动新shell时,未配置PATH环境变量 对。目录
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
修改了

有三种解决方案:

  • 手动停用和激活conda(临时解决方案)
  • 对在TMux内部启动哪些shell更加挑剔(非常不方便)
  • 注释掉
    ~/.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

    您是如何启动shell的?是否也正在加载
    .bash\u配置文件
    (例如
    bash-l
    )?
    conda init-vv-d
    输出什么?它是否建议进一步修改
    .bashrc
    ?另外,您是否自己在.bashrc中编写了该部分的代码它与我以前见过的标准模板不匹配。
    conda info
    的输出可能有助于包括在内。感谢您的评论。你提到的
    .bash\u profile
    让我走上了正确的道路。