如何在 shell 脚本中确定我所在的发行版是否基于 Debian?

如何在 shell 脚本中确定我所在的发行版是否基于 Debian?

我一直在编写一个 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 吗?更多细节。

相关内容