shebangについて

今日からrubyの基礎を復習し始めました。OSもWinからOSXに変え、新鮮な気分です。
その中で、今まで何となく使っていたshebang(シェバング)について知りました。

shebang

shebangとは、ファイル中にUNIXコマンドを記述する方法らしい。すると、その文を記述したファイルに
対してコマンドが実行される。rubyで言うと以下の文。

#!/usr/bin/ruby
puts "ハロー"

この後、このファイルに対して実行権限を与えます。

chmod +x hello.rb

そして実行。

./hello.rb
ハロー     

※実際は/usr/bin/local下にrubyインタープリターがある場合もある。その場合はlocal/rubyと指定する
ことになるが、この違いを吸収してくれるのがenvを使う方法。

参考:http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B7%A5%A7%A5%D0%A5%F3%A5%B0
#!/usr/bin/env ruby
puts "ハロー"

これは何がいいのか、例えば、ファイルがUTF-8で書かれていて、-Kuオプション付きで実行して欲しい場合、
以下のように書く。

#!/usr/bin/env ruby -Ku
puts "ハロー"

この場合、ruby hello.rbと実行した場合でも、shebang行に書いたコマンドが実行されるので、-Kuオプション
で実行される。