
dash、ash、sh用に作成されたスクリプトが100%互換性があるかどうかを知りたいです。
ダッシュや再に関する追加機能や構文の変更はありますか?
私が知っている限り、Ashはshの直系の子孫です。
答え1
簡単に答えると「いいえ」です。 100%互換ではありません。
しかし、ほとんどのシェルは基本に非常に近いので、不一致はほとんどありません。実際、ほとんどのシェルは追加された構文の点ではほとんど変わりませんが、タブの完成などのいくつかのアドインでは異なります。
そして正確に言えば、dash
BSDの子孫であるLinuxです。ash
すべての子孫であるか、別の実装でなければなりませんsh
。実際、ほとんどのシステムでは、sh
シンボリックリンクや他のものへのシンボリックリンクだけです。重要なのはPOSIXコンプライアンスです。標準に従ってスクリプトを書くときに問題は発生しません。bash
dash
このシェルの違いは最適化とパフォーマンスです。機能が少ないbash
が、完全に合法的なシェルです。 Bashはインタラクティブな作業のための豊富な機能を備えていますが、より多くのメモリを消費します。
答え2
一部のシステム、特に Debian では/空/再なし:
$ type ash dash
bash: type: ash: not found
dash is /bin/dash