Perlのコードをかくとき、だいたいいつもこんなものを記述してませんか?
# !/usr/bin/perl -w
これ**" #! "** は**『シェバング』** といい **「シェルなどインタプリタを起動するためのもの」**です
また この行全体 を 『シェバング行』 と言います。
語源は "Shell Bang", "Sharp Bang"などがあるようです。
ちなみに、"Bang"は俗語で"!: イクスクラメーションマーク"の意味をしています。
./hoge.pl
でもhoge.plには、シェバング行が書かれているので、
実際にはこういう命令になっています。
/usr/bin/perl -w hoge.pl
よくシェバング行は「2行目以下のスクリプトに対して適応する」とく記述がされますが、
つまりは、そのシェバングが書かれたファイルのスクリプトの実行コマンドであると考えて良いかと思います。
シェバングに付けるパラメーターはこんな感じ。まぁそれぞれの言語の実行コマンドをものと同様ですね。
- w : アラートを出す
- d : デバッグモードにする
- c : 文法チェック
- v : バージョンの表示、スクリプトの実行はされない
ここらまで見ていて代替分かったかと思いますが、シェバング行とはつまり、コマンドをファイル内に書き込んでいる という意味合いを持っています。
なので、シェバングに書いてある内容はコマンドラインでも当然再現出来るわけです。
ref) http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B7%A5%A7%A5%D0%A5%F3%A5%B0
余談:
通常コンピューターはマシン語のみを解釈し、実行します。
ファイルを丸々マシン語になおすことをコンパイルと呼び、C言語などで行われている方式です。
Perl, Puby, shなどは、インタプリタ言語、逐次翻訳していきます。
これがシェバングに関係しているかなって思ったりもしましたが、そうでもないかもしれませんね。(;´Д`)