提问人:a.t. 提问时间:2/26/2022 更新时间:2/26/2022 访问量:938
在 eval “$(conda shell.bash hook)” 之后将参数传递给 bash 命令?
Passing arguments to bash command after eval "$(conda shell.bash hook)"?
问:
在创建一个 conda 环境并在其中运行一些 python 代码时,我从 bash 脚本中遇到了一些困难,将变量传递给命令。
示例 1
这是硬编码的命令,它确实有效。
eval "$(conda shell.bash hook)"
cd some-repository && conda deactivate && conda activate some-environment && python -m code.project1.src --some-arg
MWE系列
下面是一个不处理命令中的变量的示例:
# bash -c "some_test"
some_test() {
echo "PWD=$PWD"
eval "$(conda shell.bash hook && export env_var=some-dir)"
cd $env_var
echo "PWD=$PWD"
}
其中输出:
PWD=/home/name/git/some-repo
PWD=/home/name
问题
如何将变量传递给之后执行的命令?eval "$(conda shell.bash hook)"
答:
2赞
Barmar
2/26/2022
#1
eval "$(command)"
执行命令行的输出。因此,您需要输出变量赋值,而不是在命令中执行它。
您正在 的子 shell 中执行变量赋值,因此其变量赋值不会保留到调用 shell 中。$()
eval "$(conda shell.bash hook && echo export env_var=some-dir)"
但我不确定为什么你需要在 .你可以写$()
eval "$(conda shell.bash hook)"
export env_var=some-dir
评论
conda activate
conda run
conda run -n some-environment python -m code.project1.src --some-arg