在我的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
,它的值就会消失。
好消息是,下次您登录时,应该设置值。