在 R shell 中用系统调用 ssh 会吃掉后续命令

Calling ssh with system in R shell eats subsequent commands

我的工作流程是通过 ESS 包将命令从 emacs 缓冲区发送到 emacs 中的 R 会话。

a=0;
system("ssh remotehost ls")
a = a+1;

当我运行上面的三行快速连续的时候(即提交到R缓冲区),最后的a的值为0。当我慢慢运行他们的时候,a是 1.

我只遇到过这个问题 运行通过系统使用 ssh 命令。在所有其他情况下,命令排队并且所有 运行 按顺序排列。

我的同事在他们的 R/vim 设置中遇到了完全相同的问题。但是我们在 RStudio 中没有同样的问题。

这里有任何建议都很好。

sshsystem() 命令期间吃掉任何 stdin。如果你逐行粘贴,那么 ssh 在你提交 a=a+1 之前终止,因此它被传递给 R 而不是 ssh。如果您不希望子进程吃掉终端输入,请使用 system("ssh .. < /dev/null")system(..., input="")