即使它在我的路径上,也无法从命令行执行gradle

时间:2014-12-09 22:59:01

标签: bash path gradle environment-variables .bash-profile

我在./bash_profile

中有以下内容
export SRCROOT=/users/benjamin.beasley/work/svn/ccdev
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk_dev/Contents/Home
export PATH=$PATH$:~/tools/tools-versions/gradle-2.2.1/bin
export PATH=$PATH$:~/tools/activator

在〜/ tools / tools-versions / gradle-1.12 / bin中,我做

drwxr-xr-x@  4 xxx.xxx  WORKDAYINTERNAL\Domain Users   136 Nov 12 11:47 .
drwxr-xr-x@ 13 xxx.xxx  WORKDAYINTERNAL\Domain Users   442 Apr 29  2014 ..
-rwxr-xr-x@  1 xxx.xxx  WORKDAYINTERNAL\Domain Users  5071 Apr 29  2014 gradle
-rwxr-xr-x@  1 xxx.xxx  WORKDAYINTERNAL\Domain Users  2395 Apr 29  2014 gradle.bat

echo $ PATH $:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin$:/Users/xxx.xxx/tools/tools-versions/gradle-2.2.1/bin$:/Users/xxx.xxx/tools/activator90566

所以我得到了可执行的gradle可执行文件。我可以从这个目录执行它。但是,如果我开始一个新的shell,并键入" gradle"它说没有找到命令。但我和#PAT;回声$ PATH $"我看到〜/ tools / tools-versions / gradle-2.2.1 / bin文件夹的完整规范路径就在那里。

但是我可以执行〜/ tools / activator目录中的可执行文件激活器。我不知道为什么bash知道激活器而不是gradle。

总结:

  1. gradle可由此用户执行
  2. gradle可以从命令行运行。
  3. gradle位于$ PATH $环境变量
  4. 其他程序,如激活器,也在$ Path $中,可以在终端的任何地方执行,无论目录是什么,我都希望成为gradle。

1 个答案:

答案 0 :(得分:1)

Unix环境变量是$PATH而不是$PATH$(它们不像Windows env vars)。

这导致了您的问题。

此路径已被破坏:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin$:/Users/xxx.xxx/tools/tools-versions/gradle-2.2.1/bin$:/Users/xxx.xxx/tools/activator90566

注意最后的90566?当您设置变量时,$$中的内容已扩展为当前进程ID。

这些都不是实际存在或有效的路径:

/opt/X11/bin$
/Users/xxx.xxx/tools/tools-versions/gradle-2.2.1/bin$
/Users/xxx.xxx/tools/activator90566