linux更改java home_关于linux:在Ubuntu中可以轻松更改$ JAVA_HOME

在Ubuntu中,我想在Java 5和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环境变量已经恢复为Java 6.当我重启我的机器(或日志)时我猜想,JAVA_HOME环境变量设置为Java 5(可能是因为我在?/ .profile中进行了修改)。

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

什么是正确的网站和重复的答案?

好问题。 没有很好的答案。

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

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

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

这与在每个friggin'shell中设置变量有什么不同?

@mlissner是的,你需要在每个shell中运行一个命令,但该值也永久保留在/etc/environment文件中。在每个shell中设置变量时,重启后会再次丢失。

另一种不必每次手动运行的方法是修改.bashrc文件以包含命令"source / etc / environment"

这对我来说不起作用,直到我export JAVA_HOME;

如何通过命令行将envvar设置为/ etc / environment,如Windows的setx?

此超级用户问题建议需要注销/登录才能使所有用户生效:superuser.com/questions/339617/

@MartinKonicek你的例子是不正确的。那条线上应该没有"出口"。 / etc / environment包含键值对

@ psychok7看到我的最后评论

请记住/etc/environment是特殊的,不允许变量替换,例如JRE_HOME=${JAVA_HOME}/jre不起作用。

@MartinKonicek我不明白背后的原因。配置文件不是从FHS声明的内容执行的。

这可能会解决您的问题:

https://help.ubuntu.com/community/EnvironmentVariables

Session-wide environment variables

In order to set environment variables in a way that affects a particular user's environment, one should not place commands to set their values in particular shell script files in the user's home directory, but use:

~/.pam_environment - This file is specifically meant for setting a user's environment. It is not a script file, but rather consists of assignment expressions, one per line.

Not recommended:

~/.profile - This is probably the best file for placing environment variable assignments in, since it gets executed automatically by the DisplayManager during the startup process desktop session as well as by the login shell when one logs-in from the textual console.

从您提供的链接:"不推荐以下内容,但此页面上提供的上一个解决方案(?)不适用于10.04桌面版本.pam_environment自然不会与发行版一起进行。"

如果您假设它处理变量,?/ .pam_environment是一种很棒的方法来阻止您的登录。我尝试将PATH设置为$ {PATH}:$ {HOME} / bin,但无法评估变量。最终结果:无法登录:(通过访问Ctrl-Alt-1并运行"/ bin / rm~ / .pam_environment"修复。请格外小心或使用辅助帐户在此处测试设置。

我个人不知道为什么他们打扰创建环境文件,然后让它以一种完全不同的方式工作,而不是任何其他设置环境变量的机制。环境文件使用的简单键值对是普通BS。我们在环境中使用变量和链接是有原因的,它今天仍然有价值。它简化了管理。 bozos谁决定PAM在这个文件中做事的方式最好是最好的笨蛋。需要解释的变量。

@ AlainO'Dea:我有同样的问题。当我无法通过登录屏幕时感到震惊和担忧。经过一番挖掘后,我发现你可以使用变量,但必须使用不同的语法。例如。 PATH DEFAULT = $ {PATH}:$ {HOME} / bin当它不使用变量时,一个简单的赋值似乎有效。

这个答案非常适合我!我认为它比被接受的更好。

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

尝试这些步骤。

- 我们要编辑"etc profile"。

环境变量将输入文件的底部。因为Ubuntu没有

提供对root文件夹的访问权限,我们将不得不在终端中使用一些命令

第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

step3:保存并关闭文件。检查是否使用echo命令设置环境变量........例如echo $PATH

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

来自bash手册页:

When an interactive shell that is

not a login shell is started, bash

reads and executes commands from

/etc/bash.bashrc and ~/.bashrc, if

these files exist.

传统上,如果您只想更改终端窗口中的变量,请将其设置在.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命令将起作用。

您应该使用~/.profile而不是./.profile。

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

我过去用update-java-alternatives完成了这个:

http://manpages.ubuntu.com/manpages/hardy/man8/update-java-alternatives.8.html

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值