我想回顯PATH變量,目標是從終端中獲得與終端中運行echo $PATH
相同的Java ProcessBuilder輸出。但是,執行輸出時實際上是$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
命令未找到爲我的單元測試之一。我正在使用this hack/trick來改變我的PATH,並通過檢查processBuilder.environment()
的結果,並確信傳遞給進程的PATH變量不應該允許查找排序(我嘗試了空字符串以及隨機路徑) 。我想看看這個shell是否在做任何有趣的事情,並修復我試圖摧毀的PATH。
而不是「回聲$路徑」,只是嘗試路徑,如果您使用的是Windows。 – 2012-02-20 21:09:44