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-releaseRedHat或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
您还可以检查rpmRedHat和dpkgDebian的更多低杠杆软件包命令。
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