在Ubuntu中使$ JAVA_HOME变得容易变长

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

我打开一个terminal并input以下内容来设置JAVA_HOME环境variables:

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

在同一个terminal窗口中,input以下内容来检查环境variables是否已经更新:

 echo $JAVA_HOME 

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

现在的问题 – 当我打开一个新的terminal窗口,我通过inputecho $ JAVA_HOME来检查我的JAVA_HOME环境variables,我看到我的JAVA_HOME环境variables已经恢复到Java 6.当我重新启动我的机器(或日志我想)JAVA_HOME环境variables设置为Java 5(大概是因为在我的〜/ .profile中所做的修改)。

有没有解决方法,以便我可以更改我的JAVA_HOME环境,而不必注销并返回(并使所有新的terminal窗口中的环境variables更改 )?

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

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

在你希望更新variables的每个shell中执行“source / etc / environment”:

 $ source /etc/environment 

检查它的工作原理:

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

太棒了,不需要注销。

如果您只想在terminal中设置JAVA_HOME环境variables,请将其设置在〜/ .bashrc文件中。 更多 。

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

会话范围的环境variables

为了以影响特定用户环境的方式设置环境variables,不应该将命令的值设置在用户主目录中的特定shell脚本文件中,而是使用:

〜/ .pam_environment – 这个文件专门用来设置用户的环境。 它不是一个脚本文件,而是由赋值expression式组成,每行一个。

不build议:

〜/ .profile – 这可能是放置环境variables分配的最好的文件,因为它在启动过程桌面会话期间由DisplayManager自动执行,以及在从文本控制台login时由loginshell执行。

尝试这些步骤。

– 我们要编辑“etc \ profile”。 环境variables将被input到文件的底部。 由于Ubuntu不允许访问根文件夹,我们将不得不在terminal中使用一些命令

第一步:启动terminal。 input命令: gksudo gedit /etc/profile

第二步:configuration文件文件将打开。 input页面底部的环境variables……….. 例如: export JAVA_HOME=/home/alex/jdk1.6.0_22/bin/java

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

第三步:保存并closures文件。 检查环境variables是否使用echo命令设置…….. 例如 echo $PATH

你需要把variables定义放在~/.bashrc文件中。

从bash手册页:

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

传统上,如果您只想更改terminal窗口中的variables,请将其设置为.bashrc文件,每次打开一个新terminal时都会.bashrc文件。 每次打开一个新的terminal时, .profile文件都不会被提供。

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

.bashrc应该可以解决你的问题。 但是,由于您使用的是Ubuntu,所以不是正确的解决scheme。 请参阅相关的Ubuntu帮助页面“ 会话范围的环境variables ”。 因此,难怪这个.profile不适合你。 我使用Ubuntu 12.04和xfce。 我build立了我的.profile ,即使我注销也不会生效。类似的经验在这里 。 所以你可能不得不使用.pam_environment文件,完全忘了.profile.bashrc 。 并注意.pam_environment不是一个脚本文件。

看看bash(1) ,你需要一个loginshell来获取~/.profile ,即-l选项。

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

我在过去使用update-java-alternatives完成了这个工作: http : //manpages.ubuntu.com/manpages/hardy/man8/update-java-alternatives.8.html

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

 root@masternode# . ~/.profile 

一旦完成,echo命令将起作用。