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オプション
で実行される。