Java bin 不在我的路径中,但我可以从我的终端 运行 java & javac。这是怎么发生的?

Java bin isn't in my path but i can run java & javac from my terminal. How does this happen?

正如您在下面的代码中看到的,我的路径中没有 java bin,但我可以在任何目录中 运行 java & javac . 我在下面的代码中使用了 运行 java & javac 命令,并且我已经重复了我的路径,您可以在其中看到它不包含我的 jdk bin! 任何帮助将不胜感激:)) !

谁能解释为什么?

kasrakaraji@Kasras-MacBook-Pro ~> echo $PATH
/usr/local/bin /usr/bin /bin /usr/sbin /sbin /Users/kasrakaraji/anaconda3/bin /Library/Apple/usr/bin /Library/TeX/texbin /Applications/Wireshark.app/Contents/MacOS
kasrakaraji@Kasras-MacBook-Pro ~> java -version 
java version "11.0.5" 2019-10-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.5+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode)
kasrakaraji@Kasras-MacBook-Pro ~> javac -version
javac 11.0.5
kasrakaraji@Kasras-MacBook-Pro ~> cd /Library/Java/JavaVirtualMachines/jdk-11.0.5.jdk/Contents/Home
kasrakaraji@Kasras-MacBook-Pro /L/J/J/j/C/Home> ls
README.html  bin/         conf/        include/     jmods/       legal/       lib/         release

当然它在你的路径中你只是不知道你的 Java 在哪里。

在我的系统上,Linux 和 Mac 我的 Java 二进制文件在相同的位置:

  1. Linux: /usr/bin/java
  2. MacOS: /usr/bin/java

要查找此信息,只需键入以下命令:whereis java

现在,关于你的道路。如果您仔细检查它,您将看到文件夹 /usr/bin,其中包含 link 给您的 java 二进制文件。

kasrakaraji@Kasras-MacBook-Pro ~> echo $PATH /usr/local/bin /usr/bin /bin

我认为您混淆了 JAVA_HOME 环境变量和 PATH 变量。

JAVA_HOME var 指向 Java 安装作为环境变量,link /usr/bin/java 指向 Java 二进制文件。

ls -l /usr/bin/java lrwxrwxrwx 1 root root 22 feb 15 18:18 /usr/bin/java -> /etc/alternatives/java

在 linux 上,您可以使用 update-alternatives 命令更改特定安装的所有 link,而在 MacOS 上,它将取决于您选择安装的进程 Java.