在Ubuntu中轻松改变$ JAVA_HOME

Jun*_*ark 138 linux ubuntu environment-variables java-home

在Ubuntu中,我想在Java 5和6之间来回切换我的JAVA_HOME环境变量.

我打开一个终端并输入以下内容来设置JAVA_HOME环境变量:

export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
Run Code Online (Sandbox Code Playgroud)

在同一个终端窗口中,我键入以下内容以检查环境变量是否已更新:

echo $JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

我看到/usr/lib/jvm/java-1.5.0-sun这是我期待看到的.另外,我修改〜/ .profile并将JAVA_HOME环境变量设置为/usr/lib/jvm/java-1.5.0-sun.

现在针对这个问题 - 当我打开一个新的终端窗口并通过键入echo $ JAVA_HOME来检查我的JAVA_HOME环境变量时,我看到我的JAVA_HOME环境变量已经恢复为Java 6.当我重启我的机器(或日志)时我猜想,JAVA_HOME环境变量设置为Java 5(可能是因为我在〜/ .profile中进行了修改).

有没有解决的办法,这样我可以改变我的JAVA_HOME环境,而无需注销并重新登录的(并作出环境变量的变化坚持在所有新的终端窗口)?

Mar*_*cek 196

将环境变量放入全局/etc/environment文件中:

...
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
...
Run Code Online (Sandbox Code Playgroud)

在要更新变量的每个shell中执行"source/etc/environment":

$ source /etc/environment
Run Code Online (Sandbox Code Playgroud)

检查它是否有效:

$ echo $JAVA_HOME
$ /usr/lib/jvm/java-1.5.0-sun
Run Code Online (Sandbox Code Playgroud)

太棒了,不需要注销.

如果只想在终端中设置JAVA_HOME环境变量,请将其设置在〜/ .bashrc文件中.

  • 这些更改仍然需要重新启动才能影响通过Ubuntu UI启动的应用程序(即双击应用程序) (9认同)
  • 这与在每个friggin'shell中设置变量有什么不同? (7认同)

Hol*_*off 31

这可能会解决您的问题:https: //help.ubuntu.com/community/EnvironmentVariables

会话范围的环境变量

为了以影响特定用户环境的方式设置环境变量,不应该在用户主目录中的特定shell脚本文件中放置命令来设置它们的值,但是使用:

〜/ .pam_environment - 此文件专门用于设置用户的环境.它不是一个脚本文件,而是由赋值表达式组成,每行一个.

不建议:

〜/ .profile - 这可能是放置环境变量赋值的最佳文件,因为它在启动过程桌面会话期间由DisplayManager自动执行,并且当从文本控制台登录时由登录shell执行.

  • 如果您假设它处理变量,〜/ .pam_environment是一种很棒的方法来阻止您的登录.我尝试将PATH设置为$ {PATH}:$ {HOME}/bin,但无法评估变量.最终结果:无法登录:(通过访问Ctrl-Alt-1并运行"/ bin/rm~/.pam_environment"修复.要特别小心或使用辅助帐户在此处测试设置. (14认同)
  • 我个人不知道为什么他们打扰创建环境文件,然后让它以一种完全不同的方式工作,而不是任何其他设置环境变量的机制.环境文件使用的简单键值对是普通BS.我们在环境中使用变量和链接是有原因的,它今天仍然有价值.它简化了管理.bozos谁决定PAM在这个文件中做事的方式最好是最好的笨蛋.需要解释的变量. (6认同)

Ale*_*lex 13

尝试这些步骤.

- 我们要编辑"etc\profile".环境变量将输入文件的底部.由于Ubuntu不允许访问根文件夹,我们将不得不在终端中使用一些命令

第1步:启动终端.输入命令:gksudo gedit /etc/profile

第2步:配置文本文件将打开.在页面底部输入环境变量............ 例如: export JAVA_HOME=/home/alex/jdk1.6.0_22/bin/java

export PATH=/home/alex/jdk1.6.0_22/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

step3:保存并关闭文件.检查环境变量是否使用echo命令设置........ 例如 echo $PATH


Paw*_*ski 9

您需要将变量定义放在~/.bashrc文件中.

来自bash手册页:

当启动不是登录shell的交互式shell时,如果存在这些文件,bash将从/etc/bash.bashrc和〜/ .bashrc读取并执行命令.


Hon*_*Zhu 5

传统上,如果您只想更改终端窗口中的变量,请将其设置在.bashrc文件中,每次打开新终端时都会将其设置为源文件..profile每次打开新终端时都不会获取文件.

查看.profile和.bashrc之间的区别: .bashrc,.bash_profile和.environment之间有什么区别?

.bashrc应该解决你的问题.但是,由于您使用的是Ubuntu,因此它不是正确的解决方案.请参阅相关的Ubuntu帮助页面" 会话范围的环境变量 ".因此,难怪这.profile对你不起作用.我使用Ubuntu 12.04和xfce.我设置了我.profile,即使我退出也没有生效.这里有类似的经历.所以你可能不得不使用.pam_environment文件而完全忘记了.profile,和.bashrc.并且注意这.pam_environment不是脚本文件.