Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash ssh远程执行命令,如何确定路径?_Bash_Ssh - Fatal编程技术网

Bash ssh远程执行命令,如何确定路径?

Bash ssh远程执行命令,如何确定路径?,bash,ssh,Bash,Ssh,我有一个bash脚本,它使用ssh远程执行命令。 然而,我发现行为上有相当大的差异,这取决于我是否在后台启动命令: ssh host cmd1 && cmd2 && cmd3 vs 在第二种情况下,有些命令没有正确执行,因为它们没有出现在$PATH上。在这两种情况下,环境似乎是不同的(当将env作为命令传递时,我注意到了相当大的差异) 怎么解释呢 我知道我可以重写PATH变量,但有没有一种方法可以更优雅地使第二个示例的行为与第一个示例的行为类似,并带有“&”功能

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

ssh host cmd1 && cmd2 && cmd3
vs

在第二种情况下,有些命令没有正确执行,因为它们没有出现在$PATH上。在这两种情况下,环境似乎是不同的(当将env作为命令传递时,我注意到了相当大的差异)

怎么解释呢


我知道我可以重写PATH变量,但有没有一种方法可以更优雅地使第二个示例的行为与第一个示例的行为类似,并带有“&”功能?

编译
sshd
时设置了PATH:

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

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

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

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