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

1

Estou tentando definir uma variável de ambiente remota explicitamente 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 eu executo o mesmo comando localmente, ele imprime corretamente 1 .

Como estou definindo a variável explicitamente, por que ela não está funcionando remotamente?

    
por Thomas Johnson 23.07.2014 / 16:41

1 resposta

4

$OPENBLAS_NUM_THREADS está sendo avaliado localmente por bash antes de ser enviado para a sua máquina remota.

Você precisa fugir do $ :

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'
    
por 23.07.2014 / 16:44