我可以相信每个Debian派生的发行版都会有一个包含'/ etc / debian_version'的'base-files'包吗?

我想要的是一个快速,可靠的命令,以确定我运行的Linux是基于Debian的。 下面的命令似乎工作。 它也返回Debian版本:

dpkg -L base-files 2>/dev/null | grep '^/etc/debian_version$' >/dev/null 2>&1 && cat /etc/debian_version 

我以前的想法是使用dpkg -S /etc/debian_version来查看它是否属于某个包,而不pipe名称。 但是dpkg -S很慢。

我只有一个疑惑:是否有Debian衍生的发行版,我的假设不成立? 有没有更好的办法?

一个更好的方法是testing你想要做什么是可能的,而不是依靠什么分配。 例如我的Ubuntu盒子声称它是“挤/ sid”。 如果你想通过dpkg来安装某些东西,那么检查一下dpkg就是你期望的可执行文件。 如果你想修改networking设置? 检查/ etc / networking / interfaces是否存在。 检查工具,如update-rc.d等

你也应该使用/ etc / lsb-release而不是/ etc / debian_version。

我不相信你可以做出这样的假设。

请参见:

  • 我如何知道哪个版本的Linux正在运行?
  • 如何找出服务器的发行版?
  • 确定Linux机器的types