Answers:
运行uname -a
应该为您提供有关系统的一些常规信息。另外,您可以运行apropos "package manager"
或使用类似的关键字来希望找到有关程序包管理器的更多信息。寻找/etc
一个文件,该文件应该在xyz-release
哪里xyz
运行发行版。
为了测试Debian系统,可以检查是否/etc/debian_version
存在:
if [ -f "/etc/debian_version" ]; then
# do stuff
fi
它应该包括Debian以及基于它的系统(包括Ubuntu及其衍生版本),尽管有些可能没有它-在这种情况下,您可以检查/etc/*release
文件:
if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
# do stuff
fi
在哪里debian|buntu|mint
可以找到发行版本名称列表(不区分大小写)-您可以从这里了解一些常见的衍生版本,尽管像Ubuntu 这样的 debian衍生版本也有自己的衍生版本。
对于基于RedHat的系统,衍生产品使用更大范围的文件,并且可能未安装lsb-release-因此您可以应用以下方法:
从获取版本名称
lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
检查文件中的DISTRIB-ID- lsb-release
一种“ Fallback方法,在现代系统上可能是不必要的”,而且该文件在Fedora上显然丢失,并且在OpenSUSE上不包含DISTRIB_ID
检查是否存在以下某些内容
/etc/fedora-release
和/或/etc/redhat-release
RedHat或Fedora/etc/SuSE-release
对于SuSe/etc/mandriva-release
对于曼陀罗使用与后一种debian类似的方法:
if [ "$(grep -Ei 'fedora|redhat' /etc/*release)" ]; then
...
我从Google Chrome的更新计划中获得了前三点,因此您可以检查一下以了解更多信息(它还决定了程序包管理器)
对于更广泛的操作系统,阅读有关SO的文章应该会有所帮助。
检查以下内容的输出:
lsb_release -a
和:
cat /etc/issue
您还可以检查rpm
RedHat和dpkg
Debian的更多低杠杆软件包命令。
apt-get install lsb-release
如果尚未安装,请使用进行安装。
uname -a
和cat /proc/version
(只读超级用户),在我的真实想法,是唯一正确的答案,这个问题的休息-样lsb_release
,/etc/issue
或cat /proc/sys/kernel/version
-不可/每个系统(甚至没有正式的Debian发行版)上无法使用。也不要打扰使用/etc/*releases
,/etc/*version
因为可以更改它们。后者并非在所有Debian发行版中都可用。
其他选择可能是(不是我的建议):
dash
或验证是否sh
链接到dash
它(它应该是运行脚本的默认值)>/dev/null 2>&1 dpkg --version && { ... }
lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
?? 刚运行lsb_release -si