在来自 Java ProcessBuilder 的 shell 运行 中显示提示

Display prompt in a shell run from Java ProcessBuilder

我运行一个shshell过程是这样的:

ProcessBuilder pb = new ProcessBuilder();
pb.command("sh");
Process p = pb.start();

然后我将命令推送到它的 OutputStream 并从它的 InputStream 读取输出。一切正常 - 我有一个 shell.

但是shell没有提示。如果我通过 adb 在设备上 运行 "sh",我会收到提示。我可以使用 PS1=blah 更改提示。但是当shProcessBuilder变成运行时,没有提示。

请问怎样才能让提示出现?

诀窍是在 'interactive' 模式下强制 shell 到 运行 - 等同于使用 sh -i:

ProcessBuilder pb = new ProcessBuilder();
pb.command("sh", "-i");
Process p = pb.start();

可行,但遗憾的是抱怨无法找到 tty fd。我暂时可以忍受。