なぜ bash ではなく sh を使うのでしょうか?

なぜ bash ではなく sh を使うのでしょうか?

既存のシェルスクリプトを修正する必要があり、それは次のように始まります

#!/bin/sh

bash もサポートしているシステムでこれを使用する理由は何でしょうか? 変更したい気持ちはありますが、知らない理由がないことを確認したいのです。

私の現在の問題は文字列操作に関するもので、${mystring:start:length}bash での使用は非常に簡単ですが、sh では利用できません。

答え1

最近の Linux ディストリビューションが最も一般的なオペレーティング システムである今日では明らかではないかもしれませんが、少し前は、さまざまなシステムに bash がまったく存在しないだけでなく、あるバージョンの Linux ディストリビューションでは、/bin/bash が Bourne のようなシェルではないものにリンクされていたことを思い出します。

当時は、#!/bin/bash スクリプトをあるシステムから別のシステムに移動するのは面倒だったので、bashisms のない純粋な Bourne Shell でスクリプトを記述する方が賢明でした。

したがって、移植性が主な理由だったと思います。私の周りには Linux 以外に何もなくなってから少なくとも 10 年が経ちますが、スクリプトに bashism がないことが確実な場合は、今でも #!/bin/sh を使用しています。

関連情報