我正在尝试找到一种方法来确定适用于大多数(或理想情况下所有)现代发行版的 Linux 发行版名称和版本。我注意到其中/etc/os-release
包含我尝试过的发行版(CentOS、Debian)所需的信息,但是依赖它的存在有多安全?诸如此类的命令uname -a
实际上并不包含相同的信息,并且lsb_release
显然不存在于例如最小的 CentOS 上。
有没有一种快速的方法可以准确地找出发行版附带的内容/etc/os-release
?此外,/etc/os-release
保证包含NAME
,VERSION
和PRETTY_NAME
字段?
答案1
任何运行 systemd 的系统都应该/etc/os-release
有指定的作为 systemd 的一部分。一些没有 systemd 的系统也可能有它(例如Debian 8,其中 systemd 是可选的,但/etc/os-release
在所有情况下都会安装)。
根据规范,所有字段都是可选的,有些字段具有默认值(“Linux”表示NAME
和PRETTY_NAME
)。
您会发现更多背景信息/etc/os-release
公告。