1

命令:

  ssh user@server 'command1; command2'

在帐户用户下创建与服务器的 ssh 连接,然后解释command1;command2在命令bash -c下,但命令:

  ssh user@server 'command1'

直接执行command1。我通过实验知道这一点,因为我找不到这方面的信息。

我的问题是,我可以指定使用的解释器或解释器上使用的任何附加参数吗?

谢谢,

一个

4

1 回答 1

1

使用最广泛的 SSH 服务器是OpenSSH ssh 服务器。它总是使用用户的 shell 执行客户端请求的命令。它调用此sh语法的等效项:

$SHELL -c 'the command with its arguments'

如果要调用备用解释器,则必须构造一个执行所需操作的 shell 命令:

$ ssh localhost 'exec perl -le "print scalar localtime"'
Mon Nov 27 11:10:33 2017
$ 

你说运行这个command1直接调用:

ssh user@server 'command1'

你可能误解了正在发生的事情。如果远程用户的 shell 是,那么 bash 会优化这种情况并在不创建子进程的bash情况下调用。command1这是bashshell(可能还有其他 shell)的特殊行为,而不是 OpenSSH。因此,如果您检查远程服务器上运行的进程,可能看起来 OpenSSH 是在command1没有使用 shell 的情况下调用的。但事实并非如此。

于 2017-11-27T15:57:26.290 回答