登录到CentOS 7虚拟机时,我的$JAVA_HOME始终设置为:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre
,这是不正确的。
我的~/.bash_个人资料如下:
# .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中指定的目录?
3条答案
按热度按时间cu6pst1q1#
每次打开一个新终端时,查找.bash_profile似乎可以解决这个问题,但为什么启动时我的$JAVA_HOME路径默认为旧版本,而不是设置为.bash_profile中指定的目录?
您需要从当前用户注销并重新登录,以便环境变量更改生效。
可能有用
在Bash中:
/etc/profile
、~/.bash_profile
、~/.bash_login
、~/.profile
。~/.bashrc
环境:
/etc/environment
为所有用户永久设置系统范围(所有用户、所有进程)的环境变量。/etc/environment
是一个系统范围的配置文件,这意味着它由所有用户使用。但是它由root所有,所以你需要是一个admin用户并使用sudo来修改它。假设如果设置了
foo="bar"
,则所有用户会话都可以访问变量foo
。source /etc/environment
~/.profile
是您自己的用户的个人shell初始化脚本之一。每个用户都有一个,可以编辑他们的文件而不影响其他人。/etc/profile
和/etc/profile.d/*.sh
是全局初始化脚本,它们等同于每个用户的~/.profile
。并且主/etc/profile
在退出之前执行/etc/profile.d/
中的所有*.sh
脚本。还要注意的是,
/etc/environment
文件在登录时为每个用户设置系统范围内的变量。bash_profile
中的命令就会被执行。因此,除非bash shell至少被打开一次,否则不会设置变量。jogvjijk2#
1.在交互式环境中运行
ps
,确保您处于bash
中。1.登录后尝试
bash -l
,看看它是否能解决您的问题。1.在
JAVA_HOME=...
之前添加set -x
,以检查是否存在错误。d8tt03nd3#
"这对我很有效"
在我的情况下,以下导致了错误:
export JAVA_HOME = /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home
错误是
=
前后有空格。删除这些空格后,错误消失。所以正确的命令如下:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home