この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