在 eval“$(conda shell.bash hook)”之后将参数传递给 bash 命令?
Passing arguments to bash command after eval "$(conda shell.bash hook)"?
在从 bash 脚本创建 conda 环境并在其中 运行 一些 python 代码时,我在将变量传递给命令时遇到了一些困难。
示例 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)"
之后执行的命令?
eval "$(command)"
执行命令行的输出。所以需要输出变量赋值,而不是在命令中执行。
您正在 $()
的子 shell 中执行变量赋值,因此它的 none 变量赋值持续到调用 shell.
eval "$(conda shell.bash hook && echo export env_var=some-dir)"
但我不确定您为什么需要在 $()
中执行此操作。你可以只写
eval "$(conda shell.bash hook)"
export env_var=some-dir
在从 bash 脚本创建 conda 环境并在其中 运行 一些 python 代码时,我在将变量传递给命令时遇到了一些困难。
示例 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)"
之后执行的命令?
eval "$(command)"
执行命令行的输出。所以需要输出变量赋值,而不是在命令中执行。
您正在 $()
的子 shell 中执行变量赋值,因此它的 none 变量赋值持续到调用 shell.
eval "$(conda shell.bash hook && echo export env_var=some-dir)"
但我不确定您为什么需要在 $()
中执行此操作。你可以只写
eval "$(conda shell.bash hook)"
export env_var=some-dir