Rubyインタプリタに複数のオプションを渡したい
NetBSDの場合、shebang行にはオプションがひとつしか設定できません(FreeBSDは、複数のオプションを設定できます)。どうしたらRubyインタプリタに複数のオプションを渡せるスクリプトをポータブルに書けるのかなーと気になっていました。久し振りにRubyのリファレンスマニュアルをつらつらと眺めていたら解決策を見付けました。答えは、
#!/bin/sh exec ruby -S -x $0 "$@" #! ruby
です。何ともマジカルだなー。
例えば、以下のようにすると$KCODEと$VERBOSEをRubyインタプリタのオプションで指定できます。
#!/bin/sh exec ruby -Ke -v -S -x $0 "$@" #! ruby p ARGV p $KCODE p $VERBOSE