Por que 'export foo=1' não é lido quando uso ssh?

Por que 'export foo=1' não é lido quando uso ssh?

Estou tentando definir explicitamente uma variável de ambiente remoto em um comando ssh:

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

Estranhamente, isso imprime apenas uma linha em branco, mas quando executo o mesmo comando localmente, ele imprime corretamente 1.

Já que estou definindo a variável explicitamente, por que ela não funciona remotamente?

Responder1

$OPENBLAS_NUM_THREADSestá sendo avaliado localmente bashantes de ser enviado para sua máquina remota.

Você precisa escapar de $:

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

ou use aspas simples, que inibem a avaliação da variável bash:

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

informação relacionada