[13] 
ファイルの先頭に #! と書き、
その直後に実行するべき命令と引数を書き、
改行を書きます。
その続きがファイルの本体となります。
#! perl#✎[17] 
Perl の世界では、環境によって perl のpathが違うため、
配布用のスクリプトでとりあえず 
#!perl
や
#! perl
のように書いておく慣習がありました。
[18] 
その後
#!/usr/bin/env perl
のように書かれるようになりました。
この書き方は Perl 以外でも行われます。
[19] 
気にせずに #!/usr/bin/perl や #!/usr/local/bin/perl
のように決め打ちで書いておくこともよくありました。
[24] 
同様に Ruby の世界でも
#!ruby
のように書いておく慣習がありました。
[22] 
perl の path を書く場所を示しておく
ことに加えて、エディター類が shebang として認識して
Perl モードに切り替えてくれることも期待できます。
[20] path 指定だけで実行する場合や CGIスクリプトとして実行させる場合には、 入手したらまず適切な path に書き換えて使います。
ALTERNATE_SHEBANG#✎[16] Perl
は環境変数
ALTERNATE_SHEBANG
によって shebang
を #!
以外に変更できます。
>>14
[5] プラットフォームが実行時に読んで、実行するべき命令を決定します。
[10] Unix ではカーネル (execve) が読んで解釈します。
[11] 
Cygwin や MSYS / MSYS2 / Git Bash でも execve / exec
が読んで解釈します。
[6] Perl や Ruby は起動時に読んで、オプションを認識します。
[7] awk も実装によっては読んでオプションを認識するとされます。
[8] tcksh や sh も読んで認識することがあるとされます。
[9] bash, sh, ksh, Python はコメント (#) として認識し無視します。
[12] エディター類 (Emacs, Vim, その他各種)、 構文ハイライトツール (専用のもの、ページャーに組み込まれたもの、 差分表示ツールに組み込まれたものなど各種)、 その他プログラム開発支援ツール (lint など)、 ファイル形式の sniffer などがファイル形式の判定の材料として使うことがあります。
[23] 
この用途の場合、厳密な path の指定を認識する意味はないので、
正規表現などによって perl が含まれているか、
ruby が含まれているか、のような大雑把な検査で決定する場合が多いようです。
[3] 本の虫: Shebangという謎な事実上業界標準について, , https://cpplover.blogspot.com/2013/08/shebang.html
[1] Shebang (Unix) - Wikipedia, the free encyclopedia ( 版) http://en.wikipedia.org/wiki/Shebang_(Unix)
[2] shell - How to use multiple arguments with a shebang (i.e. #!)? - Stack Overflow ( ( 版)) http://stackoverflow.com/questions/4303128/how-to-use-multiple-arguments-with-a-shebang-i-e