在 shell 脚本中查看 $PATH 的远程值

在 shell 脚本中查看 $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

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

相关内容