Shell shebang groovy给定错误
我的.sh文件中有以下几行Shell shebang groovy给定错误,shell,groovy,Shell,Groovy,我的.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诀窍是避免必须指定interpeter的完整路径。有关更多信息,请参见(和)。
#! /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
诀窍是避免必须指定interpeter的完整路径。有关更多信息,请参见(和)。由于您仍要指定完整的绝对路径,因此最好使用:
#!/Users/myuser/Development/tools/groovy
至于这不起作用的原因,很可能您在$PATH
的其他地方有一个groovy
命令,并且/usr/bin/env groovy
正在调用另一个副本
这:
将告诉您$PATH
中有哪个groovy
可执行文件。这是:
ls -l /Users/myuser/Development/tools/groovy
应该告诉您为什么会出现“权限被拒绝”错误;该文件很可能不是可执行文件
另一种可能性:一些系统限制#的长度代码>行。我不知道OSX是否这样做。如果是这样的话,groovy
命令的路径可能会被截断。如果是这个问题,您可以考虑将<代码> Groovy < /C>命令复制到具有绝对路径较短的目录中。 < P>usr/bin/env
诀窍是避免必须指定interpeter的完整路径。有关更多信息,请参见(和)。由于您仍要指定完整的绝对路径,因此最好使用:
#!/Users/myuser/Development/tools/groovy
至于这不起作用的原因,很可能您在$PATH
的其他地方有一个groovy
命令,并且/usr/bin/env groovy
正在调用另一个副本
这:
将告诉您$PATH
中有哪个groovy
可执行文件。这是:
ls -l /Users/myuser/Development/tools/groovy
应该告诉您为什么会出现“权限被拒绝”错误;该文件很可能不是可执行文件
另一种可能性:一些系统限制
#的长度代码>行。我不知道OSX是否这样做。如果是这样的话,groovy
命令的路径可能会被截断。如果这是问题,您可以考虑将<代码> Groovy < /C>命令复制到具有绝对路径较短的目录。我复制了您的示例,它在这里工作(107.4)。你检查了你的权限吗?我复制了你的例子,它在这里工作(10.7.4)。您检查了权限吗?以及键入-a groovy
,哪个groovy
会告诉您它的路径。可能更容易记住。@doelleri:类型-a
的信息量可能会更大一些<代码>它不报告别名或函数。谢谢你的帮助。没有多个版本,但我有一个别名,它实际上指向实际的二进制文件。当我把它改为使用实际的二进制时,它工作了。除了type-a groovy
,哪个groovy
会告诉你它的路径。可能更容易记住。@doelleri:类型-a
的信息量可能会更大一些<代码>它不报告别名或函数。谢谢你的帮助。没有多个版本,但我有一个别名,它实际上指向实际的二进制文件。当我把它改成使用实际的二进制时,它起了作用。