「she-bang」はなぜ「#!」で始まるのですか?

「she-bang」はなぜ「#!」で始まるのですか?

"she-bang"はなぜ、で#!始まるのです#!/bin/bashか?私はこれがどのように行われるかを常に認めてきましたが、その背後に理由はありますか?

#なぜこれは始まる一般的なコメントではないのですか?それとも、これがコメントする必要がある主なポイントですか?

答え1

通常シェルボーン#!(しばしば「bang」と!呼ばれ、「she」は「SHArp」または「haSH」を変形したようです。#) - 行全体が呼び出されます。シェルボーンライン

何をすべきかわからないものとの下位互換性のために、意図的にコメント文字で始まります。おそらく!起動ファイルへのランダムなコメントと区別するために、それで始まるファイルはインタプリタを# this is my script!実行しようとしません。this is my script!

答え2

これを理解するには、スクリプトの最初の行が実際に読み込まれていることに注意してください。二重、2つの異なったプロシージャによって。最初にカーネルはファイルを開き、最初の行#!でこの文字シーケンス()を探します。見つかったら、そこに示されているシェルプログラムを実行し、ファイル名を引数として渡します。 (たとえば、ファイルが/home/me/fooで始まると#!/bin/shカーネルが実行されます/bin/sh /home/me/foo)。

次に、シェル(bin/shまたは指定されたインタプリタ)はファイルを読み込みます。シェルはshebang行について何も知りませんが、ファイル内の他の行と同じであるため、まだ最初の行を読みます...すべての行を読みます。シェルが何らかの方法で衝突したり、動作を変更したくない。これを行う方法は、コメントとして処理して無視することです。したがって、カーネル命令を開始する最良の文字はコメント文字です。

答え3

注釈がある場合にのみ、「interpretername scriptname」などのスクリプトを実行できるためです。 「!」の由来がわかりません。

関連情報