我正在尝试使用shell脚本更改环境变量,但shell脚本不会更改它。
很抱歉提出这类问题,但我正在学习Linux,我只是无法弄清楚我在做错了什么..
这是脚本
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_60
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/jre/bin
执行此.sh文件后,当我输入
时echo $PATH
它不会返回我设置的新PATH
答案 0 :(得分:1)
正如Andreas所解释的那样,您需要获取定义(并且您需要在当前的shell process中发生export
,而不是在子shell或子进程中)
您可以在~/.bashrc
某些shell functions中定义来完成这项工作:
## remember the original path at start of the interactive bash
export ORIGINAL_PATH=$PATH
function prepare_for_java() {
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_60
export PATH=$ORIGINAL_PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
}
function forget_java() {
unset JAVA_HOME
export PATH=$ORIGINALPATH
}
然后在您的终端中输入
prepare_for_java
在开始做Java之前,
forget_java
在你完成它们之后。
我建议您阅读Advanced Bash Scripting Guide和Advanced Linux Programming(以获得更广泛的图片)。