【问题标题】:Setting Java environmental variables on Centos 7 breaks the $PATH在 Centos 7 上设置 Java 环境变量会破坏 $PATH
【发布时间】:2018-02-19 17:32:18
【问题描述】:

在 Centos 7 服务器上安装 Java 8 后,我将以下几行添加到 /etc/environment

export JAVA_HOME=/opt/jdk1.8.0_161
export JRE_HOME=/opt/jdk1.8.0_161/jre
export PATH=$PATH:/opt/jdk1.8.0_161/bin:/opt/jdk1.8.0_161/jre/bin

但是在盒子上重新启动后,我登录后会出现

-bash: id: command not found
-bash: id: command not found
-bash: id: command not found
/usr/libexec/grepconf.sh: line 5: grep: command not found

这让我觉得我以某种方式破坏了 PATH 变量,但我无法打开 /etc/environment,因为“less”、“vi”等未被识别为命令。

关于我做错了什么以及如何修复当前状态的想法?

【问题讨论】:

    标签: java linux centos7


    【解决方案1】:

    不要在/etc/environment 中使用export。相反,只提供定义,例如JAVA_HOME=/opt/jdk1.8.0_161

    使用vi 的完整路径,例如/usr/bin/vi 来修复文件。这样PATH(在现在失败的/etc/environment中导出)将不会被搜索。

    这是一个示例命令。

    /usr/bin/sudo /usr/bin/vi /etc/environment
    

    【讨论】:

    • 感谢您的回答,命令的路径确实有效,但是即使 /etc/environment 处于新状态,路径变量仍然被破坏:
    • JAVA_HOME=/opt/jdk1.8.0_161 JRE_HOME=/opt/jdk1.8.0_161/jre PATH=$PATH:/opt/jdk1.8.0_161/bin:/opt/jdk1.8.0_161 /jre/bin
    • 您是否退出/重新加载了 shell?
    • 是的,我重新启动了整个盒子 - 一次用一个空文件 - 有效,然后用这个,它不起作用
    • 很高兴它成功了。我刚刚在阅读有关 CentOS 环境的信息,理想情况下,您应该创建一个 /etc/profile.d 脚本,例如 /etc/profile.d/java.sh,并在其中设置您的环境变量和路径,这样不会像设置它们那样弄乱您的路径/etc/environment 做到了。
    猜你喜欢
    • 2011-02-14
    • 2014-02-10
    • 1970-01-01
    • 2016-11-29
    • 2012-10-01
    • 2015-01-15
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    相关资源
    最近更新 更多