如何在 Java 中枚举所有环境变量

2022-09-01 11:23:12

System.getenv(name)需要环境变量的名称。

我试图调用辅助参数需要一个环境变量数组,我不确定如果我指定此参数,子进程是否会从当前进程继承环境变量。Runtime.exec(String[], String[], File),

例如,如果我作为辅助参数传递并且当前java进程有环境,那么子进程中的返回值是多少?new String[]{"NEWDIR=/home"}OLDDIR=/varSystem.getenv("OLDDIR")

更新:对不起,我必须使用Java 1.4,这似乎是在1.5中引入的?System.getenv()


答案 1
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
    System.out.format("%s=%s%n", envName, env.get(envName));
}

答案 2

System.getenv() 将返回 包含所有环境变量的 a。Map<String,String>

但是,您可以轻松切换到 ProcessBuilder,这是一个更方便的 API 来启动新流程。

您可以简单地调用 environment() 并获取一个包含现有环境变量的变量,并且您可以根据需要操作它:即,如果您向其添加一些内容,那么它将被添加到新的进程环境变量中。如果从中删除某些内容,则该内容将不会出现在新流程中。ProcessBuilderMap


推荐