在Ubuntu中轻松更改$ JAVA_HOME [关闭]

问题描述 投票:138回答:8

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

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

export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

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

echo $JAVA_HOME

我看到/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环境,而无需注销并重新登录(并在所有新的终端窗口中更改环境变量)?

linux ubuntu environment-variables java-home
8个回答
195
投票

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

...
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
...

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

$ source /etc/environment

检查它是否有效:

$ echo $JAVA_HOME
$ /usr/lib/jvm/java-1.5.0-sun

太棒了,不需要注销。

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


31
投票

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

会话范围的环境变量

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

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

不建议:

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


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

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


9
投票

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

来自bash手册页:

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


5
投票

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

查看.profile和.bashrc之间的区别:What's the difference between .bashrc, .bash_profile, and .environment?

.bashrc应该解决你的问题。但是,由于您使用的是Ubuntu,因此它不是正确的解决方案。请参阅相关的Ubuntu帮助页面“Session-wide environment variables”。因此,难怪.profile不适合你。我使用Ubuntu 12.04和xfce。我设置了我的.profile,即使我退出并且它也没有生效。类似的经验here。所以你可能不得不使用.pam_environment文件,完全忘记.profile.bashrc。请注意,.pam_environment不是脚本文件。


1
投票

看看bash(1),你需要一个登录shell来拾取~/.profile,即-l选项。


1
投票

我知道这是一个很冷的问题,但每次有新的或最近的主要Java版本时它都会出现。现在这很容易适用于6和7交换。

我在过去用update-java-alternatives做过这个:http://manpages.ubuntu.com/manpages/hardy/man8/update-java-alternatives.8.html


1
投票

更改.profile后,您需要执行该文件,以使更改生效。

root@masternode# . ~/.profile

完成此操作后,echo命令将起作用。

© www.soinside.com 2019 - 2024. All rights reserved.