环境变量

我有我的/etc/environment如下环境变量

APP="/opt/apps/" PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" JAVA_HOME="/usr/lib/jvm/java-8-oracle"

我已经在我的机器上采购source /etc/environment。我能够得到的输出,当我在终端

键入echo $APP,但是当我把它从Java文件中

LOGGER.error("APP: " + System.getenv("APP")); LOGGER.error("PATH: " + System.getenv("PATH")); LOGGER.error("JAVA_HOME: " + System.getenv("JAVA_HOME"));

我得到的唯一路径的输出而不是其他2个ENV变量。

输出

2017-12-18 07:22:10 ERROR JRWebService:127 - APP: null 2017-12-18 07:22:10 ERROR JRWebService:128 - PATH:/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 2017-12-18 07:22:10 ERROR JRWebService:129 - JAVA_HOME: null

请纠正我,我究竟做错了

回答:

这听起来像不导出APP和JAVA_HOME。使用unix shell,set(变量在当前shell中可见)和export(变量对所有子进程都可见)之间有区别。如果您只键入“X = Y”,则设置X,但不导出。 PATH大部分已经出口到某个地方。

您可以在控制台中运行“export | grep APP”来测试。如果APP不显示,那么即使echo $APP工作得很好,该变量对于java或您运行的任何其他程序都不可见。

如果是这种情况,只需将“导出APP”添加到.profile或启动Java应用程序的脚本(或测试,只需在启动Java之前在控制台上键入)。

回答:

你不应该源你的/ etc /环境。这不是让变量进入你的过程的方式。/etc/environment文件不是一个脚本,所以它没有任何意义。它只是一个设置列表,有点像属性文件。

请参阅this了解更多详情。

当您登录时会被读取。因此,要使变量可见,您应该注销并返回。

以上是 环境变量 的全部内容, 来源链接: utcz.com/qa/261470.html

回到顶部