TLDR;为什么 brew/cask(甚至可能是本机安装程序)为 java 安装多个可执行文件?
系统数据:
MacOS 10.13 / 高山脉
我正在设置一台新的开发机器,在安装 java 之前运行以下命令:java
并被告知找不到二进制文件。
从这里我跑了brew cask install java
。此时,java 变得可执行并运行which java
,为我提供了 usr/bin/java 的路径。不出所料,这个位置原来是一个链接
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
出于好奇,我跑了:/usr/libexec/java_home
返回:
/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
我相信这是 JAVA_HOME 环境变量的典型位置。但是,当查看 java bin 指向的路径时,您会注意到位置不同。JAVA_HOME/bin
指向一个位置/Library
whilewhich java
指向一个位置System/Library
我知道 Mac 计算中有一条一般规则,即 /System 资源是不应被蒙混过关的基本机器设置,而 /Library 资源是供用户安装和管理的软件,但我不明白为什么我会将完全相同的可执行文件存储在两个地方。
我的问题是,为什么相同的软件安装在两个不同的地方,为什么会JAVA_HOME/bin
指向一个二进制文件而which java
指向另一个?
我在询问之前使用的资源: