ssh远程执行命令,如何确定PATH?

时间:2011-02-09 20:31:19

标签: bash ssh

我有一个使用ssh远程执行命令的bash脚本。 然而,我发现行为的差异非常大,这取决于我是否在后台启动命令:

ssh host cmd1 && cmd2 && cmd3

VS

ssh host "cmd1 && cmd2 && cmd3" &

在第二种情况下,某些命令未正确执行,因为它们没有出现在$ PATH上。看来环境在这两种情况下是不同的(当通过env作为命令我注意到相当大的差异)。

如何解释?

我知道我可以覆盖PATH变量,但有没有办法以优雅的方式做到这一点让第二个例子表现得像“&”功能?

2 个答案:

答案 0 :(得分:6)

在第一个命令中,您可能正在本地主机上执行cmd2和cmd3,而不是远程主机。 &&单词由本地shell解释,不作为参数传递给ssh。

答案 1 :(得分:1)

编译PATH时设置了

sshd

[~]> grep PATH /etc/sshd_config         
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

执行远程命令时始终使用绝对路径。