System.getenv不会获取〜/ .bash_profile中定义的变量

Pat*_*rio 8 java linux bash

这是〜/ .bash_profile文件中的一行

export MESSAGE="Hello World"

我想MESSAGE在java中访问系统变量.

System.getenv("MESSAGE"); 不起作用.

And*_*oss 5

.bash_profile 文件仅用于登录 shell。如果您的 java 进程是从不是登录 shell 的 shell 生成的(例如#!/bin/sh顶部带有 a 的脚本),那么它不会读取它(尽管它仍然可能从环境中继承 MESSAGE 取决于您的运行方式)。

另请注意, .bash_profile 也不会为非“登录”shell 的交互式 shell 运行,因此即使您有 shell 提示,也不能依赖它正在运行。为此,人们通常使用 .bashrc,它是为所有交互式 shell 提供的。

如果您希望在所有 Bourne shell 衍生品中设置一个变量,而不管它们是否是交互式的,请将它放在 .profile 和 .bashrc 中。


Yai*_*sky 1

我建议您按照上面的建议使用 echo $MESSAGE 来测试您的环境变量是否确实已“定义”。
此外,更改 bash_profile 文件不会影响您当前的 shell,
您必须使用“source”才能使其影响您当前的 shell。
我还建议阅读这篇有关 bashrc 和 bash_profile 之间差异的文章。
也许你应该在 bashrc 中定义 EXPORT ?