Linux环境变量

时间:2015-09-10 07:00:08

标签: linux shell environment-variables

我正在尝试使用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

1 个答案:

答案 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 GuideAdvanced Linux Programming(以获得更广泛的图片)。

另请参阅bash(1)credentials(7)fork(2)execve(2)environ(7)