从Java设置/获取环境变量

时间:2015-07-26 13:40:07

标签: java environment-variables

我在.sh脚本中设置环境变量如下:

export enVAr=$(/sbin/ip route|awk '/default/ { print $3 }')

并在Java中获取环境变量我运行脚本:

ProcessBuilder pb = new ProcessBuilder("./setEnvIP.sh");
Process p = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
{
    System.out.println(line);
}

但是我的env变量为null:

String setVar = System.getenv("enVAr");

如何获取env变量?

2 个答案:

答案 0 :(得分:1)

使用ProcessBuilder执行脚本时,将启动一个新进程并更改与该子进程关联的环境变量。因此,原始Java应用程序的环境保持不变。

您需要在启动JVM之前执行脚本,以便环境修改在Java进程中有效。

答案 1 :(得分:1)

在您提供的示例中,仅为子进程(setEnvIP.sh)及其子进程设置环境变量。它不是在父java进程中设置的。

据我所知,没有办法在Java中为当前进程设置环境变量。您只能使用ProcessBuilder.environment()http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html#environment()

修改子流程的环境