判断脚本是否在Windows或Linux中运行

48
有没有一种简单的方法可以通过编程来确定R脚本是在Windows还是Linux中执行的?

我有点晚来到这个聚会,但考虑一下Google代码搜索:http://www.google.com/codesearch?as_q=linux+windows&btnG=Search+Code&hl=en&as_lang=r -- 即指定“as_lang=r”只在查找字符串“linux”和“windows”时获取基于R的解决方案。而它就在那里... - Dirk Eddelbuettel
太棒了!我不知道有GOOG代码搜索这回事。我一直在苦苦搜寻,但结果却与我想要的毫无关联。 - JD Long
4个回答

59
if(.Platform$OS.type == "unix") {
} else {

}

我不应该浪费时间在第一条评论上。又被抢先了。 - Dan
1
如果那是一个有用的评论,我会感到同情...但那真的是浪费时间! :) - Pekka
谢谢!我真的想不起来这个了。 - JD Long
1
实际上,在OSX上也会返回“unix”。我猜你还需要检查Sys.info()["sysname"]=='Darwin'来区分。 - conjugateprior

19
Sys.info()["sysname"]

14
.Platform$OS.type

返回

[1] "unix"
或者其他东西。

请参考R.version()获取其他操作系统类型的信息。 - Spacedman
啊.. 大小写问题。这是 R.Version()。 - JD Long

13

我可以在三台Linux或Windows机器上运行相同的代码。我使用以下内容设置工作目录:

if(R.Version()$os == "linux-gnu"){
  dir.pre <- "/home"
} else {
  dir.pre <- "C:/Users"
}

在我的Debian Linux服务器和我的Ubuntu笔记本电脑上:

> .Platform$OS.type
[1] "unix"
> R.Version()$os
[1] "linux-gnu"

在我的Windows 10笔记本电脑上,在RStudio中:

> .Platform$OS.type
[1] "windows"
> R.Version()$os
[1] "mingw32"

随意编辑并添加到这个列表中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接