Python Conda命令在命令提示符下工作,但在bash脚本中不工作

Python Conda命令在命令提示符下工作,但在bash脚本中不工作,python,linux,bash,anaconda,conda,Python,Linux,Bash,Anaconda,Conda,我的anaconda(4.5.4)只要通过linux终端(bashshell)使用就可以正常工作。但是,在bash脚本中运行conda命令根本不起作用 脚本test.sh包含以下行: #!/bin/bash conda --version conda activate env 现在,运行bash test.sh会导致错误 test.sh:未找到第2行:conda:命令 test.sh:第3行:未找到conda:命令 根据建议,anaconda版本>4.4 my.bashrc不包含 expor

我的anaconda(4.5.4)只要通过linux终端(bashshell)使用就可以正常工作。但是,在bash脚本中运行conda命令根本不起作用

脚本test.sh包含以下行:

#!/bin/bash
conda --version
conda activate env
现在,运行
bash test.sh
会导致错误

test.sh:未找到第2行:conda:命令
test.sh:第3行:未找到conda:命令

根据建议,anaconda版本>4.4 my.bashrc不包含

export PATH="/opt/anaconda/bin:$PATH",
但是


谢谢。

do
sudo ln-s/home//miniconda3/etc/profile.d/conda.sh/etc/profile.d/conda.sh
,然后重试。这将永久激活所有用户的conda


多亏了@darthbith的评论,我才解决了这个问题

由于
conda
是一个bash函数,bash函数不能传播到独立的shell(例如,通过执行bash脚本打开),因此必须添加行

source /opt/anaconda/etc/profile.d/conda.sh

在调用conda命令之前,将其添加到bash脚本。否则bash将不知道conda的情况。

如果@randomwalker的方法对您不起作用,而您的脚本在更基本的shell(如sh)中运行时就不会起作用,那么您有两个选择

  • 将此添加到脚本中:
    eval$(conda shell.bash hook)

  • 使用:
    bash-i
    调用脚本,使其在交互式环境中运行


  • 假设您尝试使用“miky”@“服务器”地址访问用户名;使用“哪条康达”学习康达路径,那么您可能会得到一条路径,如“”/home/miky/anaconda3/bin/conda”
    然后将您的conda命令如下所示(在我的示例中,我使用conda安装了一个mysql插件示例):shhmiky@server-t“/home/miky/anaconda3/bin/conda安装-y-c anaconda mysql connector python”仅此而已。

    谢谢,但我不是正在使用的远程服务器的管理员。conda在terminal中工作得很好,但在bash脚本中却不行。通过
    /opt/anaconda/etc/profile.d/conda.sh
    我已经为自己激活了conda。只是
    conda:command not found
    表明它没有激活。可能conda.sh没有做好它的工作。啊,它们之间应该没有空格/opt/。。。以及开头的点。这是相关的:。自conda 4.4以来,
    conda
    被定义为一个bash函数,不再是一个可执行文件。您的提示引导我朝着正确的方向前进。非常感谢。这很有效!谢谢我的是在
    /home/ubuntu/miniconda3/etc/profile.d/conda.shonda.sh
    中。有没有办法传播这个?我的bash脚本运行的其他bash脚本也希望使用conda,我是否需要在每一个脚本中都包含该调用?如github问题中所述:。默认情况下,函数不会导出以在子shell中可用。我建议您这样做:source~/anaconda3/etc/profile.d/conda.sh conda激活我的_env“…当您的脚本在更基本的shell(如sh“-baller)中运行时,它不会激活我的_env”!完美的答案,顺便说一句。效果非常好。如果你不明确地引用其结果正在传递给
    eval
    的扩展,可能会出现细微的错误。因此,它应该更像
    eval“$(conda shell.bash hook)”
    ,这样在
    eval
    获取其参数列表之前,任何glob表达式都不会替换为匹配的文件名。(这不是引用失败可能影响此用例的唯一副作用,但它是注释范围内最容易解释的副作用)。
    在bash中看不到函数、别名或shell内置,因为它是一个外部命令,而不是shell内置命令。改用
    输入conda
    source /opt/anaconda/etc/profile.d/conda.sh