bashとshの拡張子を持つファイル

bashとshの拡張子を持つファイル

bashと拡張子を持つファイルについて調査しましたsh。ほとんどの人とリソースは、ファイルに拡張子がbashある場合はbashスクリプトが含まれていると言います。同様に、拡張子を持つファイルにはスクリプトがsh含まれていますsh

しかし、bashとshスクリプトの違いは見つかりません。人々にシェルでスクリプトを書く方法を教えることを目的としたコースと記事があり、すべて同じタイトルを持っていますshell scripting

この時点でシェルスクリプトはどれに対応しますか?

BashスクリプトまたはShスクリプト。

bashとshスクリプトの違いが何であるかを理解しようとしています。

答え1

POSIXlandのファイル名には「拡張子」はありません。ファイル名のAは.他の文字と変わらず、私たちのようなミートバックが提供する以外に特別な意味はありません。

一つは希望名前で終わるすべてのファイルは.bashシェルによって実行されるスクリプトですが、bashこれに対する保証はありません。

実際に与えるみんなシェルスクリプトのサフィックスは、.shshebang 行と同様に使用するインタプリタです。しなければならないそのファイルの実行に使用する必要があるシェルを正しく指定してください。

sh、、、、など、bash2つの異なるが関連するシェルです。kshcshzshfishashdash

各シェルには独自の構文、機能、習慣、欠点があります。一部のシェルは互いに互換性がありますが(通常、そのシェル用に作成されたスクリプトはsh他の多くのシェルで実行されることもありますbash)、一部はそうではありません。

答え2

私が毎日発見する唯一の重要な問題は、比較演算子に関するbashものです。二shbash等価演算子は==文字列比較に使用できます。

if [ "$var" == "foo" ]; then  # bash

ただし、これはsh単一の等価項目が必要なため、構文エラーです。

if [ "$var" = "foo" ]; then   # sh

これが唯一の違いだと言うわけではありませんが、一般的な問題です。

関連情報