我刚刚将/etc/environment
文件更改为:
M2_HOME=/usr/local/apache-maven/apache-maven-3.1.1
M2=$M2_HOME/bin
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
PATH=$M2:$PATH
JAVA_HOME=/usr/local/jdk1.6.0_45
PATH=$JAVA_HOME:$PATH
(尝试做类似的事情这)
但是,当我尝试通过键入例如来检查环境变量时,echo "$M2"
结果是所有变量都是空行,并且 $PATH 与编辑文件之前相同。为什么我的更改不起作用?我尝试关闭并打开 shell,但什么也没发生。
答案1
/etc/environment
需要适当的重新登录才能生效,因为它在登录时由 PAM 处理。此外,正如 @przemo 指出的那样,它不是作为脚本运行或获取的,因此变量不会展开。将这些变量放在文件.sh
中/etc/profile.d/
:
sudo tee -a /etc/profile.d/my_vars.sh <<"EOF"
export M2_HOME=/usr/local/apache-maven/apache-maven-3.1.1
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
export JAVA_HOME=/usr/local/jdk1.6.0_45
export PATH=$JAVA_HOME:$PATH
EOF
这还需要重新登录才能完全生效,但您可以通过运行登录 shell 立即进行测试:
$ bash -l
$ echo $PATH
/usr/local/jdk1.6.0_45:/usr/local/apache-maven/apache-maven-3.1.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
正如 Gunnar 所指出的,对 的默认赋值PATH
应保留在 中/etc/environment
,而不应添加到上述脚本中。请参阅此社区维基页面了解更多信息。
答案2
/etc/environment
不是脚本文件,不能使用变量,为了进一步阅读,我建议https://help.ubuntu.com/community/EnvironmentVariables