SSH 명령을 실행하고 변수를 원격으로 확장하는 방법

SSH 명령을 실행하고 변수를 원격으로 확장하는 방법

다음 명령을 수행하여 원격 서버에서 HOME 변수를 확장하고 싶습니다.

ssh user@host bash -c "'echo ${HOME}'"

그러나 대신 이는 로컬로 확장됩니다.

원격 HOME 변수를 얻는 방법은 무엇입니까?

답변1

HOME환경 변수의 원격 값을 얻는 것이 목적이라면 수행하는 것이 더 쉬울 것입니다.

ssh user@host printenv HOME

이는 원격 쉘이나 시스템에 유틸리티가 있는 한 작동합니다 printenv.


변수 HOME가 큰따옴표로 묶인 문자열 안에 있기 때문에 로컬로 확장됩니다.

대신 다음 중 하나를 수행하세요.

ssh user@host 'bash -c "echo \"\$HOME\""'

또는

ssh user@host 'bash -c '"'"'echo "$HOME"'"'"

위의 첫 번째 경우에서 원격 쉘은 다음 명령을 받습니다.

bash -c "echo \"\$HOME\""

구현하다.

두 번째에서는

bash -c 'echo "$HOME"'

로컬 셸이 zsh또는 인 경우 형식 지정자를 사용하여 원격 셸에 대해 적절하게 인용된 문자열을 구성 bash할 수 있습니다 .%qprintf

ssh user@host "$( printf '%q ' bash -c 'echo "$HOME"' )"

이는 여러 줄 명령에도 적용됩니다.

ssh user@host "$( printf '%q ' bash -c '
echo "home: $HOME"
echo "away: $AWAY"' )"

또한보십시오:

관련 정보