在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命令将起作用。