2008-09-10

可搬なシェルスクリプト (1)

すべてのシステムがSUSv3に準拠しているわけはなく、すべてのシェルがSUSv3に準拠しているわけはなく、シェルスクリプトはシェルとユーティリティの混淆で、どちらが玉でどちらが石か判別できるわけはない。

Linux GNU/SystemsはBourne Again Shellを/bin/shに使うかもしれない(Ubutuはそうじゃない)。BSD系列は(Almquist Shellを含む)パブリックドメインのKorn Shellを使うかもしれない。Mac OS XはバージョンによってZ Shellを使ったりBoune Again Shellを使ったりする(ウンコ!)。SolarisはThe Heirloom Bounre Shellなる黙示的な名前をひりだした(ぶりぶりっ!)。

GNU Autoconfのマニュアルに曰く、

So while most modern systems do have a shell somewhere that meets the POSIX standard, the challenge is to find it.

The Heirloom Bourne Shellで動作すれば、現代的なシステムではだいたい動作するだろうと期待してもそれほど間違いではない。シェルの問題はユーティリティに押しつけられ、問題は面倒になるばかりだけれど。たとえば算術演算は$((expression))でなく`expr expression || true`と書かなければならない。

0 件のコメント: