使$ JAVA_HOME在Ubuntu中易于更改[关闭]


139

在Ubuntu中,我想在Java 5和Java 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环境变量已还原为Java6。重新启动机器(或登录时)我想再来一遍)JAVA_HOME环境变量设置为Java 5(大概是由于我在〜/ .profile中进行的修改)。

有没有办法解决这个问题,以便我可以更改我的JAVA_HOME环境而不必注销并重新登录(并使该环境变量更改粘贴在所有新的终端窗口中)?


29
什么是正确的网站,重复的答案是什么?
Martin Konicek 2012年

~/.profile仅当您登录Ubuntu时才读取该文件,因此,如果您注销/登录,则将为所有终端和您运行的任何其他应用程序设置JAVA_HOME。如果在其中设置了JAVA_HOME,~/.bashrc则只有从终端运行的应用程序才能看到它。
jr0cket 2015年

Answers:


196

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


9
这些更改仍然需要重启才能影响通过Ubuntu UI启动的应用程序(即双击应用程序)
Eric Hu

7
这与仅在每个friggin的shell中设置变量有何不同?
mlissner

1
不必每次手动运行此方法的另一种方法是修改您的.bashrc文件以包括命令“ source / etc / environment”
nityan 2014年

1
@MartinKonicek您的示例不正确。该行上不应有“导出”。/ etc / environment包含键值对
pdeva

1
请记住,这/etc/environment是特殊的,并且不允许变量替换,例如JRE_HOME=${JAVA_HOME}/jre将不起作用。
阿卜杜勒2015年

31

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

会话范围的环境变量

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

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

不建议:

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


通过您提供的链接:“不建议使用以下内容,但此页面上提供的先前解决方案(?)在10.04桌面发行版中不起作用。.pam_environment并非自然进行发行。”
Calmarius 2011年

14
如果您假设〜/ .pam_environment处理变量,它是一种很棒的登录方法。我尝试将PATH设置为$ {PATH}:$ {HOME} / bin,但它无法评估变量。最终结果是:。无法登录:(访问CTRL-ALT-1和运行固定“/斌/ RM〜/ .pam_environment”格外小心,否则在这里使用一个辅助帐户测试设置
阿兰·奥戴

6
我个人不知道为什么他们要麻烦创建环境文件,然后使它以与以往任何其他设置环境变量的机制完全不同的方式工作。像环境文件使用的简单键值对是纯BS。我们在环境中使用变量和链接是有原因的,今天它仍然值得。它简化了管理。谁决定这个文件中PAM的处理方式最好是谁,那么最好的人就是卑鄙的人。需要解释变量。
比尔·罗斯莫斯

1
@ AlainO'Dea:我有完全一样的问题。当我无法通过登录屏幕时感到震惊和担心。经过一番挖掘,我发现您可以使用变量,但必须使用其他语法。例如。PATH DEFAULT = $ {PATH}:$ {HOME} / bin当不使用变量时,似乎可以进行简单的赋值。
tim_wonil 2012年

是的,我同意@ AlainO'Dea。如果您的脚本有任何错误,您将无法登录。照顾自己。
伊万·胡

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

第三步:保存并关闭文件。检查环境变量使用echo命令设置........ echo $PATH


9

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

从bash手册页:

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


5

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

请参阅以下有关.profile和.bashrc 的区别:.bashrc,.bash_profile和.environment有什么区别?

.bashrc应该可以解决您的问题。但是,这不是正确的解决方案,因为您正在使用Ubuntu。请参阅相关的Ubuntu帮助页面“ 整个会话范围的环境变量 ”。因此,难怪这.profile对您不起作用。我使用Ubuntu 12.04和xfce。我设置好了.profile,即使我注销并登录也无法生效。类似的经验在这里。因此,您可能必须使用.pam_environment文件,而完全忘记了.profile.bashrc。注意,这.pam_environment不是脚本文件。




1

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

root@masternode# . ~/.profile

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


您应该使用~/.profile而不是./.profile
亚历克西斯·威尔克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.