![如何在 shell 脚本中确定我所在的发行版是否基于 Debian?](https://linux22.com/image/98071/%E5%A6%82%E4%BD%95%E5%9C%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%A1%AE%E5%AE%9A%E6%88%91%E6%89%80%E5%9C%A8%E7%9A%84%E5%8F%91%E8%A1%8C%E7%89%88%E6%98%AF%E5%90%A6%E5%9F%BA%E4%BA%8E%20Debian%EF%BC%9F%20.png)
我一直在编写一个 shell 脚本,它需要知道系统是否实际上是基于 Debian 的。现在我已经看到了这问题,但其答案并没有那么有帮助。我知道检查/etc/os-release
和 的输出lsb_release
,同样我知道检查命令是否rpm
存在dpkg
是检查发行版是否分别基于 Red Hat 或 Debian 的另一种方法。但所有这些方法都有缺陷。有数百种不同的基于 Debian 的发行版(包括基于 Ubuntu 的发行版,而 Ubuntu 本身又基于 Debian),检查NAME
中的字段/etc/os-release
或 的Distributor ID
输出中的是否lsb_release -a
与数百种已知的基于 Debian 的发行版中的任何一个相匹配将需要永远。检查 dpkg 和 rpm 命令是否存在也不是万无一失的,因为有些人出于各种不同的原因安装了其他发行版的包管理器。例如,在我的 Ubuntu 机器上,我安装了 RPM,部分原因是有时我使用 Open Build Service 的 OSC 命令,在某些情况下需要 RPM。
简而言之,我想要一种简单而快速的方法来检查(确定)我的脚本所在的发行版是否基于 Debian。这可能吗?
编辑:正如人们通过投票结束这个问题似乎暗示的那样,/etc/debian_version 存在于所有基于 Debian 的系统上。有人有这方面的证据吗?
答案1
所有 Debian 衍生品都应该有/etc/debian_version
,这是由 Essential 提供的base-files
包裹。由于它很重要,因此您可以依赖它的安装,因此该文件也存在。
我说“应该”是因为没有什么可以阻止衍生品删除该文件,但据我所知,没有什么可以阻止。看Linux Mint 有 /etc/debian_version 吗?更多细节。