【发布时间】:2017-10-14 21:22:01
【问题描述】:
想要编写一个适用于多个 linux 发行版的脚本。
还想添加检查命令,如果不存在,请安装一些软件包。因此,需要一个解决方案来检查 Dist 名称(如 Debian 或 RedHat),以便为该 Dist 执行正确的命令。
我已经尝试过“lsb_release”,但这是否适用于所有后续版本? :Debian / Ubuntu | Red Hat / Fedora / Suse / Cent OS" 如果是的话,知道我可以从上面的所有 Dist 中获得lsb_release 的输出吗?
在 Debian 中,我从 lsb_release -a 2>/dev/null | grep Distributor 得到这个:
Distributor ID: Debian
在 Rasberry,我明白了:
Distributor ID: Raspbian
但是其他发行版呢?
【问题讨论】:
-
你试过
cat /proc/version吗? -
@dps 这给出了内核的版本,它与发行版名称无关。 (在某些情况下,它甚至可能明显不同步——例如,如果机器在某些虚拟化环境中运行。)
-
@dps
/proc/version没有显示分布。 @duskwuff 已经写好了,它只是内核版本。但我需要 Dist 名称.. 认为lsb_releasecmd 是标准的 linux cmd,适用于所有 Dist,但我不确定 -
很难开发出适用于所有这些发行版的东西。我认为您最好的选择是开发 2-3 个涵盖所有发行版的测试,并在您的脚本上“测试”每个关键字测试,例如
if [ -z "$myTest" ]; then...和/或echo "$myTest" | grep -i debian ... -
听起来您真的需要一个自动化解决方案。
标签: linux ubuntu centos debian redhat