shell scriptでArch Linuxかを判定をする方法

shell scriptでの判定方法を思いついたのでメモしておく。

Arch Linuxにはカーネルリリース番号*1のところに"3.5.3-1-ARCH"とか書かれていて、"ARCH"と書かれている部分を利用すれば判定できそうだなと思って、いろいろ調べてみた。そしたら正規表現を使った処理をすれば良さそうだったのでやってみたらできた。

できたのがこち

if [[ `uname -r` =~ ARCH$ ]]; then
    echo "matched Arch Linux."
    # 何か処理を書く
fi

unameのコマンドをバッククォートで囲んで、コマンドの結果を利用したら判定できる。
実行して確かめる場合は、

$ nano check.sh # 他のエディタ(emacs, vim, etc)で作ってもいい
#!/bin/sh

# ブラウザからコピーして、nanoに Ctrl + Shift + Insertでペースト
if [[ `uname -r` =~ ARCH$ ]]; then
    echo "matched Arch Linux."
else
    echo "unmatched."
fi
$ chmod +x check.sh
$ ./check.sh

# または

$ sh check.sh

.bashrcとかで、ディストリビューションごとに設定を切り替える用途に使えると思う。思いつく例としてはpacmanエイリアスを他のディストリビューションでは設定したくない時に使える。


uname -r カーネルリリース番号を表示する
=~ 文字列を正規表現と比較する演算子

*1:uname -rで出力されるやつ