为什么我使用 ssh 时无法读取“export foo=1”?

为什么我使用 ssh 时无法读取“export foo=1”?

我正在尝试在 ssh 命令中明确设置远程环境变量:

ssh worker-2 "export OPENBLAS_NUM_THREADS=1; echo $OPENBLAS_NUM_THREADS"

奇怪的是,这只会打印一个空白行,但是当我在本地运行相同的命令时,它会正确打印1

既然我明确设置了变量,为什么它不能远程工作?

答案1

$OPENBLAS_NUM_THREADSbash在发送到远程机器之前正在本地进行评估。

您需要逃避$

ssh worker-2 "export OPENBLAS_NUM_THREADS=1; echo \$OPENBLAS_NUM_THREADS"

或者使用单引号,这会抑制 bash 变量的评估:

ssh worker-2 'export OPENBLAS_NUM_THREADS=1; echo $OPENBLAS_NUM_THREADS'

相关内容