シェルスクリプトで$ PATHのリモート値を表示する

シェルスクリプトで$ PATHのリモート値を表示する

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

おすすめ記事