¿Por qué no se lee 'export foo=1' cuando uso ssh?

¿Por qué no se lee 'export foo=1' cuando uso ssh?

Estoy intentando configurar una variable de entorno remoto explícitamente en un comando ssh:

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

Curiosamente, esto imprime solo una línea en blanco, pero cuando ejecuto el mismo comando localmente, imprime correctamente 1.

Dado que estoy configurando la variable explícitamente, ¿por qué no funciona de forma remota?

Respuesta1

$OPENBLAS_NUM_THREADSestá siendo evaluado localmente bashantes de enviarlo a su máquina remota.

Necesitas escapar de $:

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

o utilice comillas simples, que inhiben la evaluación de la variable bash:

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

información relacionada