.sh ファイルに次の行があります
#! /usr/bin/env /Users/myuser/Development/tools/groovy
println "this is a test"
env: /Users/myuser/tools/groovy: 権限が拒否されました
コマンド /usr/bin/env groovy を実行すると、エラーは発生しません。OS X でなぜそれが起こるのか、何か手がかりはありますか?
このトリックの目的は#!/usr/bin/env
、インターピーターへのフル パスを指定する必要がないようにすることです。詳細については、この質問(および私の回答) を参照してください。とにかく完全な絶対パスを指定しているので、次を使用することもできます。
#!/Users/myuser/Development/tools/groovy
これが機能しない理由については、おそらく、 のgroovy
別の場所にコマンドがあり$PATH
、/usr/bin/env groovy
その別のコピーを呼び出しています。
これ:
type -a groovy
は、どのgroovy
実行可能ファイルがあなたの中にあるかを教えてくれます$PATH
。この:
ls -l /Users/myuser/Development/tools/groovy
「許可が拒否されました」というエラーが表示される理由を教えてください。ほとんどの場合、そのファイルは実行可能ではありません。
別の可能性: 一部のシステムでは、行の長さが制限されてい#!
ます。OSXがそうするかどうかはわかりません。その場合、groovy
コマンドへのパスが切り捨てられている可能性があります。これが問題である場合は、groovy
絶対パスが短いディレクトリにコマンドを移動またはコピーすることを検討してください。