端末でecho $PATH
と同じ出力をJava ProcessBuilderから取得するという目的で、 。ただし、実行時には、実際にはPATH変数の値の代わりに$PATH
が出力されます。 ProcessBuilderが$をエスケープしているのではないかと思っていますが、これを防ぐトリックがありますか?
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
コマンドをシミュレートしようとしています。ここ
は、私はそのことについて話しています何のコードサンプルは、文字列の「$ PATH」を出力します私のユニットテストの1つ。私はthisハック/トリックを使用して私のPATHを変更し、processBuilder.environment()
の結果を検査して、プロセスに渡されるPATH変数がソートの検索を許可してはならないと確信しています(空の文字列とランダムなパスを試しました) 。シェルが何か面白いことをしているのか、私が破壊しようとしているPATHをバックアップしているのかを見たいと思います。
"echo $ path"の代わりに、ウィンドウを使用している場合は、単にパスを入力してください。 –