登录时,~/bash\u配置文件中的$JAVA\u主路径来源不正确

登录时,~/bash\u配置文件中的$JAVA\u主路径来源不正确,java,linux,bash,centos,java-home,Java,Linux,Bash,Centos,Java Home,登录到CentOS 7虚拟机后,我的$JAVA_主页始终设置为: /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 s

登录到CentOS 7虚拟机后,我的$JAVA_主页始终设置为:
/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
每次打开新终端时,Sourcing.bash_配置文件似乎都能纠正这个问题,但为什么我的$JAVA_主路径在启动时默认为旧版本,而不是设置为.bash_配置文件中指定的目录

  • 在交互式shell中运行
    ps
    ,确保您处于
    bash
  • 登录后尝试
    bash-l
    ,看看它是否能解决您的问题
  • JAVA_HOME=…
    之前添加
    set-x
    ,以检查是否有问题
  • 每次我打开一个新的终端时,bash_配置文件都会显示为 更正此问题,但为什么我的$JAVA_主路径默认为旧路径 启动时的版本,但未设置为中指定的目录 .bash_档案

    您需要从当前用户注销并再次登录,以便环境变量发生更改

    可能有用

    在Bash中:

    • Bash-as-login shell将按顺序加载
      /etc/profile
      ~/.Bash\u-profile
      ~/.Bash\u-login
      ~/.profile
    • Bash作为非登录交互shell将加载
      ~/.bashrc
    环境:

    • 使用
      /etc/environment
      永久性地在系统范围内(所有用户、所有流程)为所有用户设置环境变量

      /etc/environment
      是一个系统范围的配置文件,这意味着它被所有用户使用。但它归root所有,所以您需要是管理员用户并使用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 shell,则执行bash_概要文件中的命令。因此,除非至少打开一次bash shell,否则不会设置变量

    您是如何登录到虚拟机的?ssh?我是使用安装在VMWare Workstation 12笔记本电脑上的VM映像在本地登录的。似乎您的
    .bash\u配置文件在登录时没有来源。检查您的登录shell。