Next: , Previous: Writing Autoconf Macros, Up: Top


10 移植性のあるシェルプログラミング

独自の調査を書いているとき,コードを移植性の高いものにするため,使用を避 けるべきシェルスクリプトプログラムのテクニックもあります.Bourneシェルと, BashとKornシェルのような上位互換性があるシェルは,何年もかけて進展しまし たが,問題を避けるために,unixバージョン7の以降の1977年頃に加えられ た機能を利用しないでください(see Systemology).

シェル関数,エイリアス,無効な文字クラスや,Bourneシェル互換のものでは見 つからないすべての機能を使用するべきではありません.最小公倍数に制限され てます.unsetさえ,全てのシェルではサポートしていません!また,以 下のように,インタプリタ仕様として,感嘆符の後にスペースを含めてください.

     #! /usr/bin/perl

パスの前のスペースを省略する場合,(DYNIXのような)4.2BSDを基本 とするシステムは,‘#! /’は4バイトのマジックナンバーとして解釈される ので,その行を無視します.古いシステムでは,‘#!’行の長さにも小さな 制限があり,例えばSunOS 4では,(改行を含めず)32バイトになります.

configureスクリプトで実行すべき外部プログラムの設定は,かなり 小さくなっています.リストは,See Utilities in Makefiles. この制限で, ユーザは,かなり小さいプログラム設定から残りをビルドすることが可能になっ ていて,パッケージ間の独立部分を多くし過ぎることを避けることができます.

これらの外部ユーティリティには,移植性の高い機能のサブセットがあります. Limitations of Usual Toolsを参照してください.

シェルに関するドキュメントのソースは他にもあります.例えば, the Shell FAQsを参照し てください.