さまざまな種類のシェルがあるので、bashとシェルスクリプトの違いは何ですか?すべてのUnixシェルで実行される互換性のあるスクリプトを書くことは可能ですか?
ベストアンサー1
スクリプトbash
はBourne-Again SHellによって解釈されるスクリプトなので、シェルスクリプトです。他のシェルでは正常に実行される場合と実行されない場合があります。特定の構文を使用すると、他のbash
シェルでも機能するかどうかはわかりません。
すべてのシェルで解釈できるスクリプトを作成するには、POSIX標準で説明されている構文を使用する必要があります。シェルコマンド言語。当然じゃないみんなシェルはPOSIX標準に準拠していますが、これが最善の方法です。これらのスクリプトは非常に移植性があり、多くのLinuxおよび* nixシステムでエラーなしで同じ方法で実行できます。
多くのシェルおよびコマンドラインツールは、という名前の環境変数を探します$POSIXLY_CORRECT
。設定されている場合、これらのツールはPOSIX互換ツールのように動作します。
もう一つの試みは--posix
フラグです。たとえば、GNUにはすべてのGNU拡張を無効にし、posixのように動作するsed
フラグがあります。--posix
sed
sed
bash
サポート--posix
と$POSIXLY_CORRECT
変数。
このようにスクリプトを作成し、posix互換シェルを使用してテストすると、最高の場所にあります。