shebang groovy给出错误

时间:2012-07-24 01:37:37

标签: shell groovy

我的.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上发生?

1 个答案:

答案 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命令移动或复制到具有较短绝对路径的目录。