为什么 bash 在不运行 source ~/.bash_profile 的情况下不更新 Java 路径?

为什么 bash 在不运行 source ~/.bash_profile 的情况下不更新 Java 路径?

我使用的是Mac,$JAVA_HOME环境路径设置~/.bash_profile如下:

export JAVA_HOME=$(/usr/libexec/java_home)

更新Java后,bash一直尝试从旧版本中查找Java。

每次打开新终端时,我都必须运行source ~/.bash_profile告诉 bash 新的 Java 路径。是否有任何配置覆盖我的设置.bash_profile

答案1

所做的更改~/.bash_profile仅在新的 shell 会话(新的终端窗口)中可见。新的 shell 会话将解析更新的配置文件并具有新$JAVA_HOME值。

这假设终端启动新 shell 作为登录 shell。如果没有,则更改应进入~/.bashrc.如果您不使用bash其他 shell,则文件名将取决于您使用的 shell。

要更改现有会话中的值$JAVA_HOME,您必须在命令行上显式设置该值,或者,正如您所发现的,获取 shell 初始化文件(这可能会或可能不会产生其他副作用,具体取决于其他命令的内容)文件中正在做的事情)。

答案2

代替

export JAVA_HOME ~ Blah

在您的 bash_profile 或 zshrc 上,使用

export PATH = <YOUR FULL LOCATION JDK>/bin:$PATH

现在任何时候它都会起作用。你必须添加bin.

相关内容