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

tdo*_*bek 0 ssh bash

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

ssh host cmd1 && cmd2 && cmd3
Run Code Online (Sandbox Code Playgroud)

ssh host "cmd1 && cmd2 && cmd3" &
Run Code Online (Sandbox Code Playgroud)

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

怎么解释?

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

Jou*_*nen 6

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