如果“java”不在我的路径中,为什么它在终端(bash)中是有效的命令?

如果“java”不在我的路径中,为什么它在终端(bash)中是有效的命令?

在 OSX 上,在终端中使用以下命令:

echo $PATH

给出以下输出:

/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Applications/Android Studio.app/sdk/platform-tools

您可以看到其中没有对 JAVA 的引用。但是在终端中,当我输入:

java

它被视为有效命令并输出:

用法:java [-options] class [args...](执行类)或 java [-options] -jar jarfile [args...](执行 jar 文件),其中选项包括:-d32 如果可用,使用 32 位数据模型 -d64 如果可用,使用 64 位数据模型 -server 选择“服务器”VM 默认 VM 是服务器,因为您正在服务器类机器上运行。

我的问题是,如果我的 PATH 变量中没有引用我的 java 命令,并且我的终端实例当前正在探索的目录中也没有引用它,那么它如何识别我的 java 命令?

感谢您的帮助。

答案1

在我的 OSX 10.9.4 系统上,Java 位于 /usr/bin 中:

$ which java
/usr/bin/java

该目录也位于您的命令路径中。

/usr/bin 中的条目是一个符号链接。也许您期望实际的 java 安装目录位于您的路径中,但事实并非如此。在 /usr/bin 中创建符号链接是一种常见做法。

$ ls -l /usr/bin/java
lrwxr-xr-x  1 root  wheel  74 May 17 17:02 /usr/bin/java -> 
    /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

相关内容