スクリプトを実行するには、shebang行を使用する方が良いですか?

スクリプトを実行するには、shebang行を使用する方が良いですか?

私はshebangを探していますが、なぜそれを使うべきか疑問に思います。以下を使用してbashスクリプトを実行できます。

bash foo.sh

または

./foo.sh

(foo.shにshebangラインがあります)

各方法の長所と短所は何ですか?基本的にどの方法を使用する必要がありますか?

答え1

そうだと言いたいです。本質的に shebang を使用する方が良いです。

プロフェッショナル:

すべてのスクリプトを$PATH(おそらく/usr/local/binまたは~/bin)に入れて実行可能としてマークすると、どのインタプリタを呼び出す必要があるか(bash、Python、Ruby、Perlなど)考えずに名前で実行できます。

fooの任意の場所にshebangという実行可能ファイルを配置すると、単に入力だけで実行できます$PATHfoo

欠点:

#!/bin/bash上部とchmod +xファイルに入力する必要があります。

費用はまったくかかりません、返品も非常に簡単です。

答え2

hashbangを使用する主な理由は、使用したい正確なソルバーを指定することです。移植可能なシェルスクリプトを書くのは素晴らしいですが、人々はしばしば特定のシェルの特定の機能に依存します。「バシズム」現実世界の基盤を持っているので、通訳者が何であるかを明確にする必要があります。

これはこれに限定されない。シェルスクリプトのみ - シェルスクリプトを除いてハッシュバンが必要です。それ以外の場合、システムはファイルで何をすべきかわからず、ユーザーのデフォルトシェルを使用してスクリプトを解釈しようとします。これは通常、AWK、Perl、Python、Ruby、Tcl / Tk ...では望ましくない操作です。 AWKは実際にはhasbangの重要性を示す別の例です。さまざまな実装には微妙な違いがあり、特定の通訳者を要求することは、予期しない失望を防ぐ良い方法になる可能性があります。バージョン 2/3 Python スクリプトにのみ適用されます。

関連情報