我需要逻辑检查计算机的操作系统是否为Solaris。换句话说,我需要一种方法来检查操作系统是否是Solaris,如果是,则返回TRUE
,如果不返回FALSE
。我可以轻松检查操作系统是否是Windows,Mac,Linux,因为我可以访问这些系统type
(例如,“unix”,“windows”)来搜索,因为此信息通常是google-able。有点像:
.Platform$OS.type == "unix"
.Platform$OS.type == "windows"
有效且SO上还有其他方法(例如,Sys.info()["sysname"] == "Windows"
)。在我搜索SO和Google的过程中,我遇到了很多关于Windows,Mac,Linux的问题,但没有办法专门确定操作系统是否是Solaris。例如,这个链接导致了其重复的其他类似问题,它解决了确定操作系统的问题,但不是Solaris的逻辑检查。
如何以编程方式确定计算机的操作系统是否为Solaris?
我可能需要更具体地了解我感兴趣的os Solaris形式(我不确定,因为我对操作系统知之甚少)。特别感兴趣的是CRAN检查中使用的Solaris系统:
答案 0 :(得分:7)
深入研究Sys.info
使用的C代码,最终会调用sys/utsname.h
,这应该为大多数类Unix系统(and is indeed part of the standard)定义。
查看this website,似乎Solaris使用 SunOS 作为utsname
。这是一个副本,以防链接死亡:
The utsname macro
We've already seen one macro in use on a Solaris 2 system, utsname.
As a refresher, here is how we called the utsname macro ...
Figure 12-1 Using the utsname macro
...
utsname: sys SunOS
此外,Wikipedia article on uname
明确指出所有Solaris系统的系统名称为 SunOS 。
因此,为了完整起见,您可以在函数中轻松grep
:
is.solaris<-function()
grepl('SunOS',Sys.info()['sysname'])