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'

관련 정보