今回紹介するスクリプトでは、実行環境のOSを判定するシェルスクリプトを紹介します。
目次
環境変数OSTYPEを用いたOSの判定
早速ですが、サンプルとなるスクリプトを以下に示します。
このスクリプトでは、\$OSTYPE という環境変数を使用して、実行中のOSを判定しています。case文を用いて、異なるOSに応じたメッセージを表示しています。
#!/bin/bash
# OSを判定する関数
check_os() {
case "$OSTYPE" in
linux-gnu*)
echo "Linux"
;;
darwin*)
echo "macOS"
;;
cygwin*|mingw32*|msys*)
echo "Windows"
;;
*)
echo "Unknown OS: $OSTYPE"
;;
esac
}
# OSの判定を実行
check_os
このスクリプトでは、\$OSTYPEという環境変数を使用して、実行中のOSを判定しています。
- Linux: linux-gnu*で始まるOSはLinux系です。
- macOS: darwin*で始まるOSはmacOSです。
- Windows: cygwin*, mingw32*, msys*で始まるOSはWindows系です。
- Unknown OS: 上記の条件に当てはまらない場合は、「Unknown OS」と表示されます。
より細かいOSの種類の判別
おわかりの通り、上記のサンプルスクリプトで判別できるのはLinux, Windows, MacOSなどの大まかな種類であり、例えばUNIXの中で使っているマシンがUbuntuであるか否かなどを知ることはできません。
より細かいOSの種類の判別を行うサンプルスクリプトを以下に示します。以下はUbuntuかCentOSかを判別するシェルスクリプトです。
#!/bin/bash
# /etc/os-releaseファイルを読み込む
if [[ -f /etc/os-release ]]; then
. /etc/os-release
# IDフィールドで判定
case "$ID" in
ubuntu)
echo "This system is Ubuntu."
;;
centos)
echo "This system is CentOS."
;;
*)
echo "This system is neither Ubuntu nor CentOS."
;;
esac
else
echo "os-release file not found."
fi
このスクリプトでは「/etc/os-release」というファイルを確認します。私の環境では以下のような情報が記されていました。
case文を使用して、変数\$IDの値に基づいて異なる処理を実行します。$IDは、ディストリビューションの名前(例: ubuntu, centos)を示します。
まとめ
このシェルスクリプトを使うことで、異なるOS環境に対して条件分岐を行い、処理を分けることができます。例えば、特定のOS向けの設定やインストール手順を自動化する際に役立ちます。