web-dev-qa-db-ja.com

ダッシュ、アッシュ、shスクリプトは100%互換性がありますか?

ダッシュ、アッシュ、およびsh用に記述されたスクリプトが100%互換性があるかどうかを知りたいですか?

ダッシュまたはアッシュに追加された機能、または構文の変更はありますか?

私が聞いたところによると、灰はshの直接の子孫です。

17
user1115057

短い答えは「いいえ」で、100%互換性はありません。

しかし、ほとんどのシェルは基本に非常に近いので、矛盾にぶつかることはほとんどありません。実際、ほとんどのシェルは追加された構文ではそれほど違いはありませんが、タブ補完などの追加機能によって異なります。

また、dashashの子孫のようなものです。正確には、BSDからLinuxへのポートです。そして、それらすべてはshの子孫または異なる実装である必要があります。実際、shは、ほとんどのシステムでbashdashなどへのシンボリックリンクです。重要なのはPOSIXへの準拠です。標準に従ってスクリプトを作成すると、問題が発生することはありません。

これらのシェルの違いは、最適化とパフォーマンスにあります。それらはbashより機能が豊富ではありませんが、完全に正当なシェルです。 Bashはインタラクティブな作業には機能が豊富ですが、たとえばより多くのメモリを使用します。

18
Zlatko

一部のシステム、特にDebianでは/ bin/ashが利用できないことに注意してください:

$ type ash dash
bash: type: ash: not found
dash is /bin/dash
1
Steven Penny