Mac OS Xでgroovyスクリプトをshebangで実行
JGGUG MLでのやりとりより。
UNIX系OSでは、一般に、shebang(シバン・シェバン)すなわち、実行権のついたファイルの最初の行が#!で始まっているとき、それをシェルスクリプト(もしくはインタープリタ言語のソースコード)とみなして、シェルからコマンドとして実行できる、という機能が(システムコールレベルで)あるのですが、groovyについてもLinuxでは可能なのですが、Mac OS Xでは「#!/usr/local/bin/groovy」では動かないねーという話がありました。(関西支部でのGinA読書会のときの話題から)
この原因はMac OS Xがshebangを処理する際に、#!行でインタープリタとして指定されたコマンドが、バイナリか、シェルスクリプトを判別し、シェルスクリプトだった場合実行してくれない(sh/bashに渡す)、という仕様によると思われます。
ご存知の様にgroovyの起動コマンドはシェルスクリプト(Windows環境下ではバッチファイル)だからです。
この回避方法として、すなわちMac OS Xでshebangをもちいてgroovyスクリプトを直接実行する方法の一つとして、#!/usr/bin/env groovy見たいにやる方法と、あと以下のようにJVM起動コマンドを直接指定する方法があります。envを介在させるとgroovy自体に対する引数が渡せないという問題があるので、有効なケースがあるかもしれません(ないかもしれません)。
#!/Library/Java/Home/bin/java -classpath /tool/groovy-1.6.2/target/install/lib/groovy-1.6.2.jar -Dgroovy.starter.conf=/tool/groovy-1.6.2/target/install/conf/groovy-starter.conf -Dgroovy.home=/tool/groovy-1.6.2/target/install -Dtools.jar=/Library/Java/Home/lib/tools.jar org.codehaus.groovy.tools.GroovyStarter --main groovy.ui.GroovyMain --conf /tool/groovy-1.6.2/target/install/conf/groovy-starter.conf --classpath . println "hello"
あ、GROOVY_HOME等に相当するパスは適宜書き換える必要があります。
- 出版社/メーカー: 東映ビデオ
- 発売日: 2002/12/06
- メディア: DVD
- クリック: 13回
- この商品を含むブログ (7件) を見る
- 出版社/メーカー: TOEI COMPANY,LTD.(TOE)(D)
- 発売日: 2009/06/21
- メディア: DVD
- 購入: 1人 クリック: 12回
- この商品を含むブログ (2件) を見る