java - 在从 Java ProcessBuilder 运行的 shell 中显示提示

标签 java android shell sh processbuilder

我运行一个 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/

相关文章:

java - 使用 docker-java 从 Amazon ECR 拉取镜像

java - 如何使用 Selenium 和 Java 提取表格元素的 id 属性的动态值

android - 当 Activity 配置更改屏幕大小和方向时强制 fragment 重新创建

android - 缩放动画后的 View ,尚未调整到新位置

linux - 是否可以在 'if' 语句中传递多个命令?

java - Spring 食谱书: AOP issue

java - 为什么我在 Spring 实例化的组件中找到静态字段?

android - 为android 4.0实现SIP服务器

Python:从后台子进程获取标准输出

bash - 如何迭代文件中的行并将字段读入变量