在来自 Java ProcessBuilder 的 shell 运行 中显示提示
Display prompt in a shell run from Java ProcessBuilder
我运行一个sh
shell过程是这样的:
ProcessBuilder pb = new ProcessBuilder();
pb.command("sh");
Process p = pb.start();
然后我将命令推送到它的 OutputStream 并从它的 InputStream 读取输出。一切正常 - 我有一个 shell.
但是shell没有提示。如果我通过 adb 在设备上 运行 "sh",我会收到提示。我可以使用 PS1=blah
更改提示。但是当sh
从ProcessBuilder
变成运行时,没有提示。
请问怎样才能让提示出现?
诀窍是在 'interactive' 模式下强制 shell 到 运行 - 等同于使用 sh -i
:
ProcessBuilder pb = new ProcessBuilder();
pb.command("sh", "-i");
Process p = pb.start();
可行,但遗憾的是抱怨无法找到 tty fd。我暂时可以忍受。
我运行一个sh
shell过程是这样的:
ProcessBuilder pb = new ProcessBuilder();
pb.command("sh");
Process p = pb.start();
然后我将命令推送到它的 OutputStream 并从它的 InputStream 读取输出。一切正常 - 我有一个 shell.
但是shell没有提示。如果我通过 adb 在设备上 运行 "sh",我会收到提示。我可以使用 PS1=blah
更改提示。但是当sh
从ProcessBuilder
变成运行时,没有提示。
请问怎样才能让提示出现?
诀窍是在 'interactive' 模式下强制 shell 到 运行 - 等同于使用 sh -i
:
ProcessBuilder pb = new ProcessBuilder();
pb.command("sh", "-i");
Process p = pb.start();
可行,但遗憾的是抱怨无法找到 tty fd。我暂时可以忍受。