2014-05-24 193 views
4

我需要從邏輯上檢查計算機的操作系統是否爲Solaris。換句話說,我需要一種方法來檢查操作系統是否是Solaris,如果是,返回TRUE,如果不是則返回FALSE。我可以很容易地檢查一個操作系統是否是Windows,Mac,Linux,因爲我可以訪問這些系統,因爲這個信息通常是谷歌搜索的,所以搜索的內容是type(例如,「unix」,「windows」)。沿着線的東西:檢查操作系統是否爲Solaris

.Platform$OS.type == "unix" 
.Platform$OS.type == "windows" 

作品和有據可查上SO其他方法(例如,Sys.info()["sysname"] == "Windows")。在我搜索SO和Google時,我被帶到了許多關於Windows,Mac,Linux的問題,但沒有辦法專門確定操作系統是否是Solaris。例如,導致其它類似問題的鏈接會導致確定操作系統,而不是Solaris中的邏輯檢查。

How to check the OS within R

如何以編程確定計算機的操作系統是的Solaris?

我可能需要更具體地瞭解我感興趣的Solaris操作系統的形式(我不確定,因爲我對操作系統知之甚少)。特別感興趣的是在CRAN使用的Solaris系統的檢查:

  1. R-修補-solaris平臺86
  2. R-修補-Solaris的SPARC
+0

你的意思是'Sys.info()[「數據類型爲sysname」]'給出的不同口味不同的值的Solaris?或者所提供的信息過於籠統? – merlin2011

+0

沒有基本上我需要檢查Solaris是否是操作系統,並給出「TRUE」或「FALSE」答案。 –

+0

所以你問什麼'Sys.info()['sysname']'返回的確切字符串對應'solaris'? – merlin2011

回答

7

挖入C代碼Sys.info用途,它最後會調用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']) 
+0

我認爲就是這樣,但沒辦法測試。我會看看我是否可以獲得Solaris for Virtual box。 –

+4

我在VirtualBox上有Solaris 11,並且可以確認'Sys.info()['sysname']''返回''SunOS'' – Ben

+0

CRAN描述中使用的字符串(http://cran.r-project.org/ web/checks/check_flavors.html)似乎是'R.Version()$ platform'的一部分。該文檔將其描述爲「由配置腳本確定的CPU-VENDOR-OS形式的三元組」。我想知道是否有其他方式訪問供應商片。 – hadley

相關問題