System.getenv("TEST_HOME") 返回 null
Posted
技术标签:
【中文标题】System.getenv("TEST_HOME") 返回 null【英文标题】:System.getenv("TEST_HOME") is returning null 【发布时间】:2016-07-16 14:58:11 【问题描述】:我正在使用 ubuntu 14.0.4 机器。
我在我的.bashrc
文件中导出了一个变量 TEST_HOME 使用
export TEST_HOME=/home/dev/code/test
当我从终端尝试echo $TEST_HOME
时,它返回了/home/dev/code/test
到目前为止,一切都很好。
当我尝试使用 Java 代码时:
String value = System.getenv("TEST_HOME");
value
为空。
我错过了什么吗?
【问题讨论】:
要使该变量位于 Java 环境中,您必须从设置了该变量的 shell 启动 Java 进程。你有吗? @folkol 我没有在特定的外壳/终端中导出这个变量。我在.bashrc
中添加了它的条目
关闭并重新打开终端以刷新 .bashrc 定义的更改
这个link 可能会对你有所帮助。
@vikingsteve 我无法从 Java 代码中获取此值。我可以从终端获得它的价值。
【参考方案1】:
在.bashrc
中提及变量仅适用于从 shell 启动的程序。对于系统范围的环境变量,请在 /etc/environment
中提及。
参考Ubuntu Environment variables
【讨论】:
目前我的/etc/environment
中只有路径变量。我需要在/etc/environment
中输入export TEST_HOME=/home/dev/code/test
吗?
我在/etc/environment
中添加了export TEST_HOME=/home/dev/code/test
。现在echo $TEST_HOME
什么都不返回(我重新启动终端),Java 代码中的相同 null(我重新启动 eclipse)我需要为此重新启动机器吗?
这个Reload env 将有助于避免重启机器。【参考方案2】:
.bashrc
只会为 bash shell 设置环境变量。要在系统范围内设置它,请将其设置在 /etc/environment
文件中。
由于您使用的是 eclipse,并且它不在 bash shell 中运行,因此它无法获取您正在设置的变量。如果您在终端中使用 java 命令行运行程序,那么它应该会得到它。
在/etc/environment
中设置变量将使其可用于eclipse。更新 /etc/environment
后,您需要重新启动计算机。
【讨论】:
以上是关于System.getenv("TEST_HOME") 返回 null的主要内容,如果未能解决你的问题,请参考以下文章
系统变量之System.getenv()和System.getProperty()
System.getenv() 和 System.getProperty() 之间的区别 [重复]
System.getProperty System.getenv 区别 log4j取法