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

system2("bash", "ls") -> cannot execute binary file

谁知道为什么

system2("bash", "ls") 

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

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

而其他 shell 会出现 w/o 问题(参见下面的示例),RStudio 终端中的“bash”也会出现 w/o 问题。如果有补救措施?

工作 system2 示例:

system2("powershell", "dir") 

运行 R-3.6.3 on Windows 10 here ...“Git bash”作为“bash”执行。

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

好的 - 这样就可以了

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

所以需要 powershell 命令而不是 args = ... (或者更有趣的是有时 'can')使用 input = ... 参数和 bash

或者如@oguzismail 的评论中所述,这也有效

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

以及@Christoph 指出的

system2("ls") 

有时也有效(即在某些 RStudio[?] 设置中它不会 return 结果在某些情况下会)。

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

所以选择最适合你的吧!