我想回显 PATH 变量,目标是从 Java ProcessBuilder 获得与echo $PATH
在终端中运行相同的输出。但是,当它执行时,输出实际上$PATH
是 PATH 变量的值。我想知道 ProcessBuilder 是否正在逃避 $ 并且有防止这种情况的技巧吗?
这是我正在谈论的输出字符串“$PATH”的代码示例:
List<String> processBuilderCommand = ImmutableList.of("echo","$PATH");
ProcessBuilder processBuilder = new ProcessBuilder(processBuilderCommand).redirectErrorStream(true);
final Process process = processBuilder.start();
String commandOutput = CharStreams.toString(CharStreams.newReaderSupplier(new InputSupplier<InputStream>() {
@Override
public InputStream getInput() throws IOException {
return process.getInputStream();
}
}, Charset.defaultCharset()));
System.out.println(commandOutput);
一些额外的上下文:
我正在尝试模拟sort
我的一个单元测试中找不到的命令。我正在使用这个hack/trick 来更改我的 PATH 并通过检查结果processBuilder.environment()
并确定传递给进程的 PATH 变量不应该允许查找排序(我已经尝试过空字符串和随机路径)。我想看看外壳是否在做任何有趣的事情并修复我试图破坏的 PATH 。