我现在有什么。这是最好的方法吗?拥有一个包含许多功能的脚本,需要一种方法来了解在运行每个函数之前运行的操作系统。
CHECK_architecture()
{
architecture=`uname -m`
if [ "$architecture" != "x86_64" ] && [ "$architecture" != "ia64" ]; then
architecture="x86"
else
architecture="x86_64"
fi
}
CHECK_distro()
{
DISTRO="";
if [ `uname -r | egrep '(6.2-RELEASE|6.1-RELEASE|5.5-RELEASE|6.1-STABLE|5.4-RELEASE|6.0-RELEASE|5.3-RELEASE|4.10-RELEASE|4.11-RELEASE)'` ]; then
DISTRO="FreeBSD";
$BIN_ECHO " System is running FreeBSD"
elif [ -f /etc/debian_version ]; then
$BIN_ECHO " System is running Debian Linux"
DISTRO=DEBIAN;
elif [ -f /etc/SuSE-release ]; then
$BIN_ECHO " System is running SuSE Linux"
DISTRO=SUSE;
elif [ -f /etc/fedora-release ]; then
$BIN_ECHO " System is running Fedora Linux"
DISTRO=FEDORA;
elif [ -f /etc/redhat-release ]; then
$BIN_ECHO " System is running Red Hat Linux"
DISTRO=REDHAT;
else
$BIN_ECHO -e " no supported distribution found running "
exit 1
fi
}
答案 0 :(得分:2)
您正在寻找config.guess
实用程序。它将可靠地确定架构和操作系统,并为您提供许多其他工具使用的标准化名称。它不会准确地告诉你你拥有哪个Linux发行版,但是你不应该需要这些信息 - 请解释你使用它的内容,我可以提供进一步的建议。
答案 1 :(得分:2)
来自维基百科的Linux Standard Base文章:
Linux标准库(LSB)是由Linux基金会组织结构下的几个Linux发行版组成的联合项目,用于标准化软件系统结构,包括与Linux操作系统一起使用的文件系统层次结构。 LSB基于POSIX规范,单一UNIX规范和其他几个开放标准,但在某些领域进行了扩展。
根据LSB: LSB的目标是开发和推广一系列开放标准,这些标准将提高Linux发行版之间的兼容性,并使软件应用程序能够在任何兼容系统上运行,即使是二进制形式。此外,LSB将协助协调招募软件供应商为Linux操作系统移植和编写产品的工作。
如果您使用的是LSB合规分发(并且您应该使用),请man lsb_release
:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 8.04.4 LTS
Release: 8.04
Codename: hardy
$ lsb_release -a
LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.5 (Final)
Release: 5.5
Codename: Final
答案 2 :(得分:0)
检查Linux发行版及其版本没有绝对可靠的方法。
$ head -n1 /etc/issue
答案 3 :(得分:0)
实际上,这取决于您运行的Linux操作系统的类型。对我而言,如果你在/etc/redhat-release
,那么获得你所使用的Linux版本的最佳方法是Redhat
。对于其他人,
Redhat: Test for /etc/redhat-release, check contents
Debian: Test for /etc/debian_version, check contents
Mandriva: Test for /etc/version, check contents
Slackware: Test for /etc/slackware-version, check contents
一般来说,请检查/etc/*-release
和/etc/*-version
答案 4 :(得分:0)
可能最正确和最简单的方法是遵循Free Standards Group,并使用lsb-release:http://linux.die.net/man/1/lsb_release