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 | カーネルリリース番号を表示する |
=~ | 文字列を正規表現と比較する演算子 |
参考
bashの正規表現マッチングの使い方 - adsaria mood
逆引きシェルスクリプト/選択メニューを簡単に実現する - Linuxと過ごす
http://blog.layer8.sh/ja/2011/12/23/linux%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%84os%E5%90%8D%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89linux/