【发布时间】:2018-10-01 09:00:09
【问题描述】:
我开发了一个 Java 应用程序,该应用程序将 shell 脚本作为输入参数并执行它。我正在使用以下块来准备环境:
ProcessBuilder pb = new ProcessBuilder("/bin/bash", scriptFile);
Map<String, String> env = pb.environment();
env.putAll(environmentVariable);
Process awk = pb.inheritIO().start();
awk.waitFor();
awk.destroy();
在上面的代码块中,environmentVariable 是一个包含一些敏感数据的 Map,这些数据稍后会被脚本使用。
我对@987654324@ 的理解是它只为那个子进程提供环境。您对该环境所做的更改仅会影响该子流程。我通过ProcessBuilder#environment()的Javadoc验证了它
现在我的问题是,在此操作结束时,即当 awk.destroy() 被调用时,环境会连同我放置的所有敏感变量一起被擦除,还是手动擦除环境变量映射更好env.remove(SENSITIVE_VARIABLE_KEY) 或 env.putAll(new HashMap<String, String>)
【问题讨论】:
标签: shell unix processbuilder