2

私が現在持っているもの。これが最善の方法ですか?多くの関数を含むスクリプトがあり、各関数を実行する前に、どの OS が実行されているかを知る方法が必要です。

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

ウィキペディアのLinux Standard Baseの記事から:

Linux Standard Base (LSB) は、Linux オペレーティング システムで使用されるファイル システム階層を含むソフトウェア システム構造を標準化するために、Linux Foundation の組織構造の下にある複数の Linux ディストリビューションによる共同プロジェクトです。LSB は、POSIX 仕様、Single 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 に答える
2

config.guessあなたはユーティリティを探しています。アーキテクチャと OS を確実に決定し、他の多くのツールが使用する標準化されたモニカを提供します。使用している Linux ディストリビューションを正確に示すことはできませんが、その情報は必要ありません。何に使用しているか説明してください。さらにアドバイスできます。

于 2012-06-01T20:00:47.077 に答える
0

Linux ディストリビューションとそのバージョンを確認する絶対的に信頼できる方法はありません。

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

実際には、実行している Linux OS の種類によって異なります。私にとって、あなたが使用している Linux のバージョンを取得する最良の方法は、/etc/redhat-releaseあなたが on の場合です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

于 2012-06-01T20:12:22.897 に答える
0

おそらく最も正確で簡単な方法は、Free Standards Group に従い、lsb-release を使用することです: http://linux.die.net/man/1/lsb_release

于 2012-06-01T20:26:15.113 に答える