【问题标题】:Display prompt in a shell run from Java ProcessBuilder在从 Java ProcessBuilder 运行的 shell 中显示提示
【发布时间】:2016-01-13 22:11:34
【问题描述】:

我像这样运行sh shell 进程:

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

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

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

请问如何让提示出现?

【问题讨论】:

    标签: java android shell sh processbuilder


    【解决方案1】:

    诀窍是强制 shell 以“交互”模式运行 - 相当于使用 sh -i:

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

    这行得通,但不幸的是抱怨找不到 tty fd。我现在可以忍受。

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 2011-11-09
      • 2013-06-02
      相关资源
      最近更新 更多