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

dash、ash、sh用に記述されたスクリプトが100%互換性があるかどうか知りたいですか?

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

聞いたところによると、アッシュはshの直接の子孫です。

コメント

  • ashはbashのストライプダウン形式です
  • ソース? ashがbashに関連していると言っているものは何も見当たりませんでした
  • '人々があらゆる種類のシェルを作成するのではなく、bashにパッチを送信するだけで、私を困惑させます。いつも。本当に知りたい場合は、マニュアルを読んでください。たとえば、man ash
  • 正解です。'の子孫ではありません。バッシュ。 ' sh(元のBourneシェル)の子孫であると言った方が正確ですが、'も完全には正しくありません。 。
  • ユーティリティ checkbashisms を使用して、スクリプトがPOSIXに準拠していることをテストできます。

回答

簡単な答えはノーです。 「100%互換性はありません。

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

また、dash

—または正確には、BSDからLinuxへの移植。これらはすべて、。実際、shはほとんどのシステムで、bashdashなどへのシンボリックリンクです。重要なのはPOSIX準拠—であり、標準に従ってスクリプトを作成する場合、問題が発生することはありません。

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

コメント

  • ただし、スクリプトの使用に関しては、互換性がありますか?
  • POSIX準拠については、その標準に従っている場合でも、スクリプトがBash用に記述されている場合、shまたはその子孫で実行されるとは思わない
  • 互換性があるはずです。 'いくつかのあいまいな機能を使用していない場合は、互いに協力してください。ただし、bashスクリプトを使用すると、さらに問題が発生する可能性があります。
  • sh、ash、またはdashでbashを使用することを意図したものではありません。それらのあいまいな機能は何ですか?
  • 多くのbash 'の新しい機能はPOSIXに追加されているため、

それらを使用しています。 [[]]コンストラクトでさえIIRCはshにありません。また、'純粋なシェルスクリプトを作成していない場合は、ツールの違いも関係することに注意してください(sed、grep、awkのバージョンが異なる…)。

回答

一部のシステム、特にDebianでは、 / bin / ash は利用できません:

$ type ash dash bash: type: ash: not found dash is /bin/dash 

コメント

  • busyboxの灰がある可能性があります。
  • とはいえ、'にもbashがないシステムはたくさんあります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です