次のスクリプトが機能する理由を知っている人はいますか?
#a-random-junk-string
echo HI
シェルは echo コマンドを実行し、HI を出力します。「!」がないので、と思いました。「#」の後、シェルはエラーを出します。
#がない場合!特定のインタープリターを指定すると、カーネルはそれをインターセプトして、指定されたプログラムで起動しません。
ただし、現在のシェルはそれをコマンドファイルとして解釈する可能性があります。これは、実行されていることを示しています。
シェルが実行可能ビットをオンにしてファイルを実行するように求められると、シェルはファイルを調べて、それがシバン #! で始まるかどうかを判断します。存在する場合は、そのコマンドを実行して、ファイルの残りの部分からプログラム テキストを取得します。
ファイルがシバンで始まらない場合、シェルはそれ自体を実行しようとします。これがあなたに起こっていることであり、シェルは最初の行をコメントとして解釈します。