OS
を取得するには と VER
、最新の標準は /etc/os-release
のようです .その前は lsb_release
でした と /etc/lsb-release
.それ以前は、ディストリビューションごとに異なるファイルを探す必要がありました。
これが私が提案するものです
if [ -f /etc/os-release ]; then
# freedesktop.org and systemd
. /etc/os-release
OS=$NAME
VER=$VERSION_ID
elif type lsb_release >/dev/null 2>&1; then
# linuxbase.org
OS=$(lsb_release -si)
VER=$(lsb_release -sr)
elif [ -f /etc/lsb-release ]; then
# For some versions of Debian/Ubuntu without lsb_release command
. /etc/lsb-release
OS=$DISTRIB_ID
VER=$DISTRIB_RELEASE
elif [ -f /etc/debian_version ]; then
# Older Debian/Ubuntu/etc.
OS=Debian
VER=$(cat /etc/debian_version)
elif [ -f /etc/SuSe-release ]; then
# Older SuSE/etc.
...
elif [ -f /etc/redhat-release ]; then
# Older Red Hat, CentOS, etc.
...
else
# Fall back to uname, e.g. "Linux <version>", also works for BSD, etc.
OS=$(uname -s)
VER=$(uname -r)
fi
uname
だと思います ARCH
を取得する はまだ最善の方法です。しかし、あなたが示した例は明らかにIntelシステムのみを扱います。 BITS
と呼ぶか このように:
case $(uname -m) in
x86_64)
BITS=64
;;
i*86)
BITS=32
;;
*)
BITS=?
;;
esac
または ARCH
を変更してください より一般的でありながら明確なバージョン:x86
および x64
または類似:
case $(uname -m) in
x86_64)
ARCH=x64 # or AMD64 or Intel64 or whatever
;;
i*86)
ARCH=x86 # or IA32 or Intel32 or whatever
;;
*)
# leave ARCH as-is
;;
esac
もちろんそれはあなた次第です。
最初のステップとしてこれを使用します:
ls /etc/*release
Gentoo、RedHat、Arch、および SuSE には、たとえば、. /etc/gentoo-release
.人気があるようです。リリース ファイルについては、このサイトを確認してください。
Debian と Ubuntu には /etc/lsb-release
が必要です これにはリリース情報も含まれており、前のコマンドで表示されます。
もう 1 つの簡単な例は uname -rv
です。 .インストールされているカーネルがストック ディストリビューション カーネルの場合、通常 時々そこに名前が見つかります。
lsb_release -a
. Debian で動作し、Ubuntu だと思いますが、残りについてはわかりません。通常、これは LSB (Linux Standard Base) 関連であるため、すべての GNU/Linux ディストリビューションに存在するはずです。