更好的方法来检查Linux版本?

时间:2012-06-01 19:51:48

标签: linux shell scripting

我现在有什么。这是最好的方法吗?拥有一个包含许多功能的脚本,需要一种方法来了解在运行每个函数之前运行的操作系统。

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
}

5 个答案:

答案 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