在Java中使用export

3

我正在使用Java调用另一个程序,该程序依赖于导出的环境变量才能正常运行:

SOME_VARIABLE=/home/..
export SOME_VARIABLE

我该如何使用Java来设置这个变量,以便我可以在不止一台机器上使用这个程序?本质上,我想能够通过Java模拟上述命令。


1
您可能还想查看这篇SO帖子:https://dev59.com/nnRC5IYBdhLWcg3wXP0C - JW8
你是如何调用另一个程序的?它是Java还是其他语言? - Vishal
2个回答

7

使用 java.lang.Runtime.getRuntime().exec(...)java.lang.ProcessBuilder 调用其他程序时,您可以设置环境变量。

使用 ProcessBuilder,您可以执行以下操作:

ProcessBuilder processBuilder = new ProcessBuilder("your command");
processBuilder.environment().put("SOME_VARIABLE", "/home/..");
processBuilder.start();

有了 Runtime,就可以:

Map<String, String> environment = new HashMap<String, String>(System.getenv());
environment.put("SOME_VARIABLE", "/home/..");
String[] envp = new String[environment.size()];
int count = 0;
for (Map.Entry<String, String> entry : environment.entrySet()) {
    envp[count++] = entry.getKey() + "=" + entry.getValue();
}

Runtime.getRuntime().exec("your command", envp);

做得很好,特别是将环境处理为哈希表,而不是盲目地将变量添加到数组末尾。 - tresf

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接