コマンドラインで自分の展開名を見つける方法は?

コマンドラインで自分の展開名を見つける方法は?

CentOS Ubuntuなどの配布名を出力できるコマンドはありますか?

各ディストリビューションに対して異なるコマンドバッチを実行するスクリプトを作成したいのですが、コマンドを使用してこのようなタスクを実行する方法を知る必要があります。

ベストアンサー1

以下は、操作を実行するシェルスクリプトの断片です。

# try various methods, in order of preference, to detect distro
# store result in variable '$distro'
if type lsb_release >/dev/null 2>&1 ; then
   distro=$(lsb_release -i -s)
elif [ -e /etc/os-release ] ; then
   distro=$(awk -F= '$1 == "ID" {print $2}' /etc/os-release)
elif [ -e /etc/some-other-release-file ] ; then
   distro=$(ihavenfihowtohandleotherhypotheticalreleasefiles)
fi

# convert to lowercase
distro=$(printf '%s\n' "$distro" | LC_ALL=C tr '[:upper:]' '[:lower:]')

# now do different things depending on distro
case "$distro" in
   debian*)  commands-for-debian ;;
   centos*)  commands-for-centos ;;
   ubuntu*)  commands-for-ubuntu ;;
   mint*)    commands-for-mint ;;
   *)        echo "unknown distro: '$distro'" ; exit 1 ;;
esac

エラーメッセージを印刷して中断するよりも、ステートメントでより便利な基本(*)操作を使用できます。case

おすすめ記事