使 $JAVA_HOME 在 Ubuntu 中易于更改

在 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,这正是我期待看到的。此外,我修改 ~/。并将 JAVA _ HOME 环境变量设置为/usr/lib/jvm/JAVA-1.5.0-sun。

现在问题来了——当我打开一个新的终端窗口,通过键入 回声 $JAVA _ Home来检查我的 JAVA _ HOME 环境变量时,我看到我的 JAVA _ HOME 环境变量已经恢复到了 JAVA 6。当我重新启动我的机器(或者登出并返回,我想) JAVA _ HOME 环境变量被设置为 JAVA 5(可能是因为我在 ~/中做了修改)。个人资料)。

有没有一种方法可以绕过这个问题,使我可以改变我的 JAVA _ HOME 环境而不必登出和返回(并使环境变量在所有新的终端窗口中改变 坚持住) ?

287049 次浏览

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

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

会话范围的环境变量

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

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

不推荐:

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

试试这些步骤。

- 我们将编辑“等配置文件”。 环境变量将被输入到文件的底部,因为 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

步骤3: 保存并关闭文件。检查是否使用 echo 命令设置环境变量... ... . . 例如 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交换。

我以前用 update-java-alternatives就是这样做的: Http://manpages.ubuntu.com/manpages/hardy/man8/update-java-alternatives.8.html

传统上,如果您只想更改终端窗口中的变量,请将其设置为 .bashrc文件,该文件在每次打开新终端时源代码。每次打开一个新的终端时,.profile文件不是来源的。

看看. profile 和. bashrc 之间的区别: Bashrc、 . bash _ profile 和. environment 之间的区别是什么?

.bashrc应该能解决你的问题。然而,这不是正确的解决方案,因为你正在使用 Ubuntu。查看相关的 Ubuntu 帮助页面“ 会话范围的环境变量”。因此,难怪 .profile不适合你。我使用 Ubuntu 12.04和 xfce。我设置了我的 .profile,它只是不生效,即使我退出和登录。类似的经验 给你。因此,您可能必须使用 .pam_environment文件,并完全忘记了 .profile.bashrc。请注意,.pam_environment不是一个脚本文件。

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

root@masternode# . ~/.profile

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