登录我的CentOS 7 VM后,我的$ JAVA_HOME始终设置为:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre
,这是不正确的。
我的〜/ .bash_profile读取:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.144-0.b01.el7_4.x86_64/jre
export JAVA_HOME
PYCHARM_HOME=/opt/pycharm-community-2017.2.3/
export PYCHARM_HOME
ECLIPSE_HOME=/opt/eclipse
export ECLIPSE_HOME
export SPARK_HOME=/opt/spark
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$JAVA_HOME/bin:$SPARK_HOME/bin:$PYCHARM_HOME/bin:$ECLIPSE_HOME
export PATH
每次打开新终端时出现.bash_profile似乎都可以解决问题,但为什么我的$ JAVA_HOME路径在启动时默认为旧版本而未设置为.bash_profile中指定的目录?
答案 0 :(得分:0)
ps
以确保您已bash
。bash -l
,看看它是否解决了您的问题。set -x
之前添加JAVA_HOME=...
,以检查是否有错误。答案 1 :(得分:0)
每次打开新终端时都会出现.bash_profile 纠正这个问题,但为什么我的$ JAVA_HOME路径默认为旧的 启动时的版本,而不是设置为中指定的目录 .bash_profile中?
您需要从当前用户退出并再次登录,以便进行环境变量更改。
可能有用
在Bash中:
/etc/profile
,~/.bash_profile
,~/.bash_login
,~/.profile
。~/.bashrc
环境:
使用/etc/environment
永久系统范围(所有用户,所有进程)为所有用户设置环境变量。
/etc/environment
是一个系统范围的配置文件,这意味着它被所有用户使用。它虽然由root拥有,但您需要成为管理员用户并使用sudo进行修改。
假设您设置foo="bar"
变量foo
将可以从所有用户会话访问。要测试变量输出,首先来源
source /etc/environment
~/.profile
是您自己用户的个人shell初始化脚本之一。每个用户都有一个,可以编辑他们的文件,而不会影响其他人。
/etc/profile
和/etc/profile.d/*.sh
是全局初始化脚本,相当于每个用户~/.profile
。全局脚本在用户特定脚本之前执行;并且主/etc/profile
在退出之前执行*.sh
中的所有/etc/profile.d/
脚本。
另请注意,
/etc/environment
文件为登录时的每个用户设置变量系统范围。 bash_profile
中的命令。因此,除非至少打开一次bash shell,否则不会设置变量。