Linux 在Ubuntu中轻松更改$JAVA_HOME

Linux 在Ubuntu中轻松更改$JAVA_HOME,linux,ubuntu,environment-variables,java-home,Linux,Ubuntu,Environment Variables,Java Home,在Ubuntu中,我想在Java5和Java6之间来回切换我的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环境变量设置为/us

在Ubuntu中,我想在Java5和Java6之间来回切换我的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环境,而无需注销和重新登录(并使环境变量的更改保留在所有新的终端窗口中)?

看看,您需要一个登录shell来获取
~/.profile
,即
-l
选项。

这可能会解决您的问题:

会话范围内的环境变量

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

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

不推荐:

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

试试这些步骤

--我们将编辑“etc\profile”。 环境变量将在文件底部输入。因为Ubuntu没有 如果要访问根文件夹,我们必须在终端中使用一些命令

步骤1:启动终端。键入命令:
gksudo gedit/etc/profile

步骤2:将打开配置文件文本文件。在页面底部输入环境变量例如:
导出JAVA\u HOME=/HOME/alex/jdk1.6.0\u 22/bin/JAVA

export PATH=/home/alex/jdk1.6.0_22/bin:$PATH

步骤3:保存并关闭文件。检查是否使用echo命令设置了环境变量Eg
echo$PATH

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

从bash手册页:

当一个交互式shell 没有启动登录shell,bash 从中读取和执行命令 /etc/bash.bashrc和~/.bashrc,如果 这些文件存在


将环境变量放入全局
/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文件中进行设置。

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

我在过去通过
更新java替代方案
完成了这项工作:

传统上,如果您只想更改终端窗口中的变量,请在
.bashrc
文件中进行设置,该文件在每次打开新终端时都会获取
.profile
文件并非每次打开新终端时都来源

请参见.profile和.bashrc之间的区别:


.bashrc
应该可以解决您的问题。然而,这不是合适的解决方案,因为您使用的是Ubuntu。请参阅相关的Ubuntu帮助页面“”。因此,难怪
.profile
不适合您。我使用Ubuntu 12.04和xfce。我设置了我的
.profile
,即使我退出并登录,它也不会生效。类似的经历。因此,您可能必须使用
.pam_environment
文件,完全忘记
.profile
.bashrc
。请注意,
.pam\u environment
不是脚本文件。

对.profile进行更改后,需要执行该文件,以便更改生效

root@masternode# . ~/.profile

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

从您提供的链接:“不建议使用以下内容,但此页面上提供的以前的解决方案(?)不适用于10.04桌面版本。pam_环境不会自然地与发行版一起处理。”~/.pam_环境是一种非常棒的方法,如果您假定它处理变量,那么它可以构建您的登录。我尝试将PATH设置为${PATH}:${HOME}/bin,但它无法计算变量。净结果:无法登录:(通过访问Ctrl-Alt-1并运行“/bin/rm~/.pam\u环境”修复)。请格外小心,或者使用辅助帐户来测试此处的设置。我个人不知道他们为什么费心创建环境文件,然后让它以完全不同的方式工作,这与以前任何其他设置环境变量的机制都不一样。像环境文件使用的简单键值对是简单的BSre是我们在环境中使用变量和链接的一个原因,它至今仍有优点。它简化了管理。无论是谁,在这个文件中决定PAM操作方式最好的人,充其量都是低能儿。变量需要解释。@AlainO'Dea:我也有同样的问题。当我无法通过时,我感到震惊和担忧瞧