ダッシュ、アッシュ、およびsh用に記述されたスクリプトが100%互換性があるかどうかを知りたいですか?
ダッシュまたはアッシュに追加された機能、または構文の変更はありますか?
私が聞いたところによると、灰はshの直接の子孫です。
短い答えは「いいえ」で、100%互換性はありません。
しかし、ほとんどのシェルは基本に非常に近いので、矛盾にぶつかることはほとんどありません。実際、ほとんどのシェルは追加された構文ではそれほど違いはありませんが、タブ補完などの追加機能によって異なります。
また、dash
はash
の子孫のようなものです。正確には、BSDからLinuxへのポートです。そして、それらすべてはsh
の子孫または異なる実装である必要があります。実際、sh
は、ほとんどのシステムでbash
、dash
などへのシンボリックリンクです。重要なのはPOSIXへの準拠です。標準に従ってスクリプトを作成すると、問題が発生することはありません。
これらのシェルの違いは、最適化とパフォーマンスにあります。それらはbash
より機能が豊富ではありませんが、完全に正当なシェルです。 Bashはインタラクティブな作業には機能が豊富ですが、たとえばより多くのメモリを使用します。
一部のシステム、特にDebianでは/ bin/ashが利用できないことに注意してください:
$ type ash dash
bash: type: ash: not found
dash is /bin/dash