bashとshを使ってスクリプトを実行することの違いは何ですか?

bashとshを使ってスクリプトを実行することの違いは何ですか?

bashとshはスクリプトを別々に実行しますか? bashとshを使ってシェルスクリプトを実行し、同じ出力を得ました。では、違いは何ですか?

また、ちょうど実行したときに./executablebashまたはshを使用しましたか?

ベストアンサー1

これは実行中のシステムによって異なります。多くのオペレーティングシステム、特にLinuxベースのオペレーティングシステムshではbash

この場合、動作にはまだわずかな違いがあります。bash呼び出すと、伝統的なBourneシェルに似ていますshが、まだほとんどのbashismを許可します。

Debianベースのオペレーティングシステムなど、他の一部のオペレーティングシステムでは代わりにsh提供されています。これは、bashismをサポートせずにきちんとしたPOSIXシェル実装で設計されているため、より大きな違いを生み出します。dashbashdash

たとえば、sh通常、POSIX 準拠によって提供される独自のオペレーティング システムでは bashism は実装されません。 Solaris 10以前では、PATHによっては、POSIX以前のBourneシェルになる可能性があります。ksh88dashsh

bashそれにもかかわらず、スクリプトは特定のコマンド、オプション、または構文を使用しないため、テストと同じ出力を取得できます。

を実行すると、./executableどのシェルが実行されるかは、デフォルトで.executableスクリプトの先頭に作成されたshebangによって異なります。bashshebangがこれを指定した場合:

#!/bin/bash
....

Shebangがなく、POSIX準拠のシェルからスクリプトを呼び出す場合、技術的には、スクリプトはshPATHの最初のスクリプトによって実行する必要があります。多くのシェルインタプリタはPOSIXを好み、bash考慮しdashkshスクリプトを解釈します。ここではSHELL環境変数は使用されません。

おすすめ記事