为什么我添加了路径到~/.bash_profile并source它,但没有效果?

为什么我添加了路径到~/.bash_profile并source它,但没有效果?

在我的install.sh

# other commands to install java...
echo 'export JAVA_HOME="/usr/java/latest"' >> ~/.bash_profile
source ~/.bash_profile

该脚本运行后,我输入echo $JAVA_HOME,但没有任何显示,但是当我source从当前shell执行命令时,再次回显它时会显示JAVA_HOME。

为什么我的脚本不运行?我该如何修复它?

我通过 ssh 连接到全新的 CentOS 7 并运行上述脚本。

答案1

install.sh 在具有其自身环境的子 shell 中运行。在此环境中,您设置 JAVA_HOME 成功。

如果 install.sh 及其子 shell 已完成,其环境也将消失。子 shell 无法在其调用过程中设置变量。

如果您使用 install.sh 启动source install.sh它,它不会在子 shell 中运行,并且您可以设置 JAVA_HOME。我不知道 install.sh 中的其他代码行是否准备通过 运行source

答案2

JAVA_HOME 是一个环境变量,但是,如果您离开源脚本.bash_profile,它的值就会消失。

好消息是,下次您登录时,应该设置值。

相关内容