다음 명령을 수행하여 원격 서버에서 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
할 수 있습니다 .%q
printf
ssh user@host "$( printf '%q ' bash -c 'echo "$HOME"' )"
이는 여러 줄 명령에도 적용됩니다.
ssh user@host "$( printf '%q ' bash -c '
echo "home: $HOME"
echo "away: $AWAY"' )"
또한보십시오: