이 bash 스크립트를 실행하면 내 로컬 경로만 표시됩니다.
ssh ${REMOTE_HOST} 'bash -s' <<EOL
set -e
source ~/.profile
echo $PATH
# Commands here don't work because $PATH is not set properly.
# How can I see what $PATH is set to here?
EOL
$PATH
디버깅하기 위해 원격 값을 어떻게 볼 수 있나요 ?
답변1
$PATH
원격 서버에서 실행되기 전에 확장됩니다.
예시 #1
Skinner.bubba.net이라는 시스템에서 이 명령을 실행한다고 가정해 보겠습니다.
[root@skinner ~]# ssh mulder 'bash -s' <<EOL
> echo $HOSTNAME
> hostname
> EOL
skinner.bubba.net
mulder.bubba.net
변수 안의 작은따옴표를 이동하면 Skinner의 Bash 셸에서 변수가 확장되는 것을 방지할 수 있습니다 echo $HOSTNAME
.
[root@skinner ~]# ssh mulder 'bash -s <<EOL
> echo $HOSTNAME
> hostname
> EOL'
mulder.bubba.net
mulder.bubba.net
예시 #2
또 다른 방법은 슬래시 이스케이프를 사용하는 것인데 $HOSTNAME
, 이는 Bash에게 문자 그대로 달러 기호를 보내고 싶다고 알려줍니다.
[root@skinner ~]# ssh mulder 'bash -s' <<EOL
> echo \$HOSTNAME
> hostname
> EOL
mulder.bubba.net
mulder.bubba.net