我的.sh文件中有以下几行
#! /usr/bin/env /Users/myuser/Development/tools/groovy
println "this is a test"env: /Users/myuser/tools/groovy:权限被拒绝
当我运行命令/usr/bin/env groovy时,我没有得到任何错误。有什么线索会发生在OS上吗?
发布于 2012-07-24 11:11:59
#!/usr/bin/env技巧的目的是避免指定interpeter的完整路径。有关详细信息,请参阅this question (和my answer)。由于您无论如何都要指定完整的绝对路径,因此您最好使用:
#!/Users/myuser/Development/tools/groovy至于为什么这不起作用,最有可能的是,您的$PATH中的其他地方有一个groovy命令,而/usr/bin/env groovy正在调用另一个副本。
这一点:
type -a groovy我会告诉你你的$PATH中有哪个groovy可执行文件。还有这个:
ls -l /Users/myuser/Development/tools/groovy应该会告诉你为什么会出现“权限被拒绝”的错误;很可能该文件是不可执行的。
另一种可能是:一些系统限制了#!线路的长度。我不知道OSX是否会这样做。如果是这样,groovy命令的路径可能会被截断。如果这就是问题所在,您可以考虑将groovy命令移动或复制到绝对路径较短的目录中。
https://stackoverflow.com/questions/11622938
复制相似问题