system2("bash", "ls") -> 无法执行二进制文件

时间:2021-02-05 12:45:33

标签: r bash system2

谁知道为什么

system2("bash", "ls") 

将导致(在 R-Gui 和 RStudio 控制台中)

/usr/bin/ls: /usr/bin/ls: cannot execute binary file 

虽然其他 shell 没有问题(参见下面的示例),而 RStudio 终端中的“bash”也可以无问题地工作。如果有补救措施?

工作 system2 示例:

system2("powershell", "dir") 

在此处在 Windows 10 上运行 R-3.6.3 ... 使用“Git bash”作为“bash”执行。

PS:以防万一有人想知道 - 我也尝试了完整路径,即 /usr/bin/ls -> 相同的结果

1 个答案:

答案 0 :(得分:0)

好的 - 这就是诀窍

system2("bash", input = "ls")

所以代替 args = ... powershell 命令需要(或更有趣的是有时“可以”)使用 input = ... 参数和 bash

或者正如@oguzismail 在评论中提到的,这也行

system2("bash", "-c ls") 

以及@Christoph 指出的

system2("ls") 

有时也能工作(即在某些 RStudio[?] 设置中,它不会返回结果,而在某些情况下)。

但我已经注意到,R 版本与不同 RStudio 版本 [或更可能是语言环境] 的不同组合当然不会总是表现一致,当然也取决于 bash 命令的可用性,如 ls(更普遍的是/usr/bin) 是否在 PATH 中。

所以选择最适合你的!