Bash

在 shell 腳本中查看 $PATH 的遠端值

  • July 3, 2015

執行這個 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來調試它?

$PATH遠端伺服器上執行之前正在擴展。

範例 #1

假設我從一個名為 skinner.bubba.net 的系統執行這些命令。

[root@skinner ~]# ssh mulder 'bash -s' <<EOL
>   echo $HOSTNAME
>   hostname
> EOL
skinner.bubba.net
mulder.bubba.net

通過移動單引號以使其echo $HOSTNAME位於其中,您可以防止變數被 skinner 的 Bash shell 擴展。

[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

引用自:https://unix.stackexchange.com/questions/213676