R本身也会这样做
utils:::.osVersion()
它(在r4.0.2中)看起来(对于你关心的部分)是什么样子的
"Darwin" = {
ver <- readLines("/System/Library/CoreServices/SystemVersion.plist")
ind <- grep("ProductUserVisibleVersion", ver)
ver <- ver[ind + 1L]
ver <- sub(".*<string>", "", ver)
ver <- sub("</string>$", "", ver)
ver1 <- strsplit(ver, ".", fixed = TRUE)[[1L]][2L]
sprintf("%s %s %s",
ifelse(as.numeric(ver1) < 12, "OS X", "macOS"),
switch(ver1,
## 10.6 is earliest that can be installed
"6" = "Snow Leopard",
"7" = "Lion",
"8" = "Mountain Lion",
"9" = "Mavericks",
"10" = "Yosemite",
"11" = "El Capitan",
"12" = "Sierra",
"13" = "High Sierra",
"14" = "Mojave",
"15" = "Catalina",
""), ver)
},
它在中定义,在中定义
src/library/utils/R/sessionInfo.R
;你可以用另一个函数看到整个函数
switch
其他操作系统的部件。
if(ver1[1L] == "10")
sprintf("%s %s %s",
ifelse(as.numeric(ver2) < 12, "OS X", "macOS"),
switch(ver2,
## 10.6 is earliest that can be installed
"6" = "Snow Leopard",
"7" = "Lion",
"8" = "Mountain Lion",
"9" = "Mavericks",
"10" = "Yosemite",
"11" = "El Capitan",
"12" = "Sierra",
"13" = "High Sierra",
"14" = "Mojave",
"15" = "Catalina",
"16" = "Big Sur", # probably not 10.16
""),
ver)
else
sprintf("macOS %s %s",
switch(ver2,
"0" = "Big Sur",
""),
ver)
问题是
. 前几天我试图找到规范的Linux基本发行版名称(比如
debian8
,
centos7