执行这个 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
通过移动单引号使其位于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