在哪些 Linux 发行版上我可以依赖 /etc/os-release 的存在?

w12*_*128 20 linux distributions

我试图找到一种方法来确定适用于大多数(或理想情况下,所有)现代发行版的 Linux 发行版名称和版本。我注意到其中/etc/os-release包含我尝试过的发行版(CentOS、Debian)所需的信息,但是依赖它的存在有多安全?诸如此类的命令uname -a实际上并不包含相同的信息,并且lsb_release在例如最小的 CentOS 上显然不存在。

有没有一种快速的方法可以准确地找出发行版附带的内容/etc/os-release?此外,是否/etc/os-release保证包含NAME,VERSIONPRETTY_NAME字段?

Ste*_*itt 17

任何运行 systemd 的系统都应该有/etc/os-release,它被指定为 systemd 的一部分。一些没有 systemd 的系统可能也有它(例如Debian 8,其中 systemd 是可选的,但/etc/os-release在所有情况下都安装了)。

根据规范,所有字段都是可选的,有些具有默认值(“Linux”代表NAMEPRETTY_NAME)。

您会在/etc/os-release公告中找到更多背景信息。