
私はshebangを探していますが、なぜそれを使うべきか疑問に思います。以下を使用してbashスクリプトを実行できます。
bash foo.sh
または
./foo.sh
(foo.shにshebangラインがあります)
各方法の長所と短所は何ですか?基本的にどの方法を使用する必要がありますか?
答え1
そうだと言いたいです。本質的に shebang を使用する方が良いです。
プロフェッショナル:
すべてのスクリプトを$PATH
(おそらく/usr/local/bin
または~/bin
)に入れて実行可能としてマークすると、どのインタプリタを呼び出す必要があるか(bash、Python、Ruby、Perlなど)考えずに名前で実行できます。
foo
の任意の場所にshebangという実行可能ファイルを配置すると、単に入力だけで実行できます$PATH
。foo
欠点:
#!/bin/bash
上部とchmod +x
ファイルに入力する必要があります。
費用はまったくかかりません、返品も非常に簡単です。
答え2
hashbangを使用する主な理由は、使用したい正確なソルバーを指定することです。移植可能なシェルスクリプトを書くのは素晴らしいですが、人々はしばしば特定のシェルの特定の機能に依存します。「バシズム」現実世界の基盤を持っているので、通訳者が何であるかを明確にする必要があります。
これはこれに限定されない。シェルスクリプトのみ - シェルスクリプトを除いてハッシュバンが必要です。それ以外の場合、システムはファイルで何をすべきかわからず、ユーザーのデフォルトシェルを使用してスクリプトを解釈しようとします。これは通常、AWK、Perl、Python、Ruby、Tcl / Tk ...では望ましくない操作です。 AWKは実際にはhasbangの重要性を示す別の例です。さまざまな実装には微妙な違いがあり、特定の通訳者を要求することは、予期しない失望を防ぐ良い方法になる可能性があります。バージョン 2/3 Python スクリプトにのみ適用されます。