2

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

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
}
4

5 回答 5

2

您正在寻找config.guess实用程序。它将可靠地确定架构和操作系统,并为您提供许多其他工具使用的标准化名称。它不会准确地告诉您您拥有哪个 Linux 发行版,但您不应该需要这些信息——请说明您使用它的目的,我可以提供进一步的建议。

于 2012-06-01T20:00:47.077 回答
2

来自wikipedia上的Linux Standard Base文章:

Linux Standard Base (LSB) 是多个 Linux 发行版在 Linux Foundation 组织结构下的一个联合项目,旨在标准化与 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
于 2012-06-01T20:24:49.550 回答
0

没有绝对可靠的方法来检查 Linux 发行版及其版本。

$ head -n1 /etc/issue
于 2012-06-01T20:08:52.093 回答
0

实际上,这取决于您正在运行的 linux 操作系统的类型。对我来说,获取您所使用的 linux 版本的最佳方法是/etc/redhat-releaseRedhat. 对于其他,

    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

于 2012-06-01T20:12:22.897 回答
0

可能最正确和最简单的方法是遵循自由标准组,并使用 lsb-release: http: //linux.die.net/man/1/lsb_release

于 2012-06-01T20:26:15.113 回答