我运行一个 sh
shell 进程,如下所示:
ProcessBuilder pb = new ProcessBuilder();
pb.command("sh");
Process p = pb.start();
然后我将命令插入其输出流并从其输入流读取输出。一切正常 - 我有一个 shell 。
但是 shell 没有提示。如果我通过 adb 在设备上运行“sh”,我会收到提示。我可以使用 PS1=blah
更改提示。但是当从ProcessBuilder
运行sh
时,没有提示。
请问如何让提示出现?
最佳答案
诀窍是强制 shell 以“交互”模式运行 - 相当于使用 sh -i
:
ProcessBuilder pb = new ProcessBuilder();
pb.command("sh", "-i");
Process p = pb.start();
这可行,但不幸的是提示无法找到 tty fd。我现在可以忍受这一点。
关于java - 在从 Java ProcessBuilder 运行的 shell 中显示提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33148762/