命令:
ssh user@server 'command1; command2'
在帐户用户下创建与服务器的 ssh 连接,然后解释command1;command2在命令bash -c下,但命令:
ssh user@server 'command1'
直接执行command1。我通过实验知道这一点,因为我找不到这方面的信息。
我的问题是,我可以指定使用的解释器或解释器上使用的任何附加参数吗?
谢谢,
一个
使用最广泛的 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
这是bash
shell(可能还有其他 shell)的特殊行为,而不是 OpenSSH。因此,如果您检查远程服务器上运行的进程,可能看起来 OpenSSH 是在command1
没有使用 shell 的情况下调用的。但事实并非如此。