System.getenv()未列出所有环境变量

MaL*_*nok 5 java variables environment system

我注意到我的一些环境变量没有被JVM接收.

我在我的.bash_profile定义如下:

IO_HOME='some_value'
export IO_HOME
Run Code Online (Sandbox Code Playgroud)

并通过在shell中做:

echo $IO_HOME
Run Code Online (Sandbox Code Playgroud)

我得到了正确的结果.

但是既没有System.getProperties()也没有System.getenv()显示这个变量.我尝试了Java 6和Java 7.

有什么我想念的吗?

Mis*_*ble 7

将环境导出到生成的进程非常稳定; 如果System.getenv()不包含变量那么它是因为它不在环境中.要检查的几件事情,都与流程的启动方式有关:

  • 您是从导出变量的环境启动Java进程吗?例如,如果它位于.bash_profile中,并且您正在从菜单或桌面执行java程序,那么在将其添加到.bash_profile中后,您必须注销并登录,以便桌面查看变量.

  • 变量是否明确地从过程的环境中删除了?ProcessBuilder允许这样做,大多数产生进程的API也是如此.

在确保在该shell中导出变量之后,要尝试的一件事是从命令行shell启动该过程.