私はマシンをRed Hat Enterprise Linux 5からRHEL 6に徐々に移行する環境で働いています。
RHEL5マシンで現在行われていることとRHEL6マシンで微妙に異なることを行うには、スクリプトのいくつかが必要です。
実用的な解決策は、実行時にチェックし、RHEL5、RHEL6、および両方でいくつかのコマンドを実行することです。
これの実用的な例は、環境モジュールを使用して.bashrc
おり、module load git
行に含まれていますが、RHEL6マシンではこのコマンドエラーが発生することです。
RHEL6 system, git should be installed - not loading module
modulefileを見ると、次のコードが見つかります。
set redhatrelease [eval exec "cat /etc/redhat-release"]
if { [regexp -nocase {release 6} $redhatrelease] } {
puts stderr "\n\t RHEL6 system, git should be installed - not loading module\n"
} else {
...
}
これは私が望むことをするように思えますが、もっと短いものを望んでいました。
それでは、bashスクリプトでRHEL6とRHEL5を区別する最も簡単な方法は何ですか?
理想的には、さまざまなメジャーバージョン間で堅牢である必要がありますが、マイナーリリース番号のバリエーションに耐えることができます。
git
Bashモジュールが必要な場合は、呼び出す前に存在するかどうかを確認します。後で表示される場合は、チェックの結果が変わるため、突然、追加の作業なしで機能が動作し始めます。
lsb_release -r
、他のテキストも含まれますRelease: 5.8
。以下のようデニスKaarsemakerは説明するのにあなたが使用している場合、lsb_release -rs
代わりに、あなただけの数を取得します。
lsb_release
ますか?(-r
数字だけを提供する必要があります。-a
利用可能なものもすべて確認してください)その場合、それはクロスベンダーでもあります。