我的.sh档案中有以下几行
#! /usr/bin/env /Users/myuser/Development/tools/groovy
println "this is a test"
env:/ Users / myuser / tools / groovy:Permission denied
当我运行命令/ usr / bin / env groovy时,我没有收到任何错误。任何线索,为什么它会在OS X上发生?
答案 0 :(得分:3)
#!/usr/bin/env
技巧的目的是避免必须指定interpeter的完整路径。有关详细信息,请参阅this question(和my answer)。既然您无论如何都要指定完整的绝对路径,那么您也可以使用:
#!/Users/myuser/Development/tools/groovy
至于为什么这不起作用,很可能你的groovy
中的其他地方有$PATH
命令,/usr/bin/env groovy
正在调用其他副本。
此:
type -a groovy
会告诉您groovy
中有$PATH
个可执行文件。这个:
ls -l /Users/myuser/Development/tools/groovy
应该告诉你为什么你得到“Permission denied”错误;很可能该文件不可执行。
另一种可能性:某些系统限制#!
行的长度。我不知道OSX是否会这样做。如果是,则groovy
命令的路径可能会被截断。如果这是问题,您可以考虑将groovy
命令移动或复制到具有较短绝对路径的目录。