简体   繁体   English

从Java ProcessBuilder运行的shell中显示提示

[英]Display prompt in a shell run from Java ProcessBuilder

I run a sh shell process like this: 我运行这样的sh shell进程:

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

and then I push commands into its OutputStream and read output from its InputStream. 然后将命令推入其OutputStream并从其InputStream读取输出。 All works fine - I have a shell. 一切正常-我有一个外壳。

However the shell has no prompt. 但是 ,shell没有提示。 If I run "sh" on the device through adb, I get a prompt. 如果通过adb在设备上运行“ sh”,则会出现提示。 I can change the prompt using PS1=blah . 我可以使用PS1=blah更改提示。 But when sh is run from ProcessBuilder , no prompt. 但是当从ProcessBuilder运行sh时,没有提示。

How can I make the prompt appear please? 我如何使提示出现?

The trick is to force the shell to run in 'interactive' mode - equivalent to using sh -i : 诀窍是迫使shell以“交互”模式运行-等同于使用sh -i

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

That works, but unfortunately complains about not being able to find a tty fd. 那行得通,但不幸的是抱怨找不到tty fd。 I can live with that for now. 我现在可以忍受。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java ProcessBuilder运行shell脚本是挂起的 - java ProcessBuilder run shell script is hanging processbuilder 从 Java 运行命令 - processbuilder to run commands from Java 为什么Java Processbuilder不能在其自己的目录中运行PMCMD(informatica命令),但可以在命令提示符下正常运行 - Why PMCMD (informatica command) is not run by Java Processbuilder from its own directory while it works fine with command prompt 使用java.lang.ProcessBuilder在其他主机上运行Shell脚本 - Using java.lang.ProcessBuilder to run a shell script on a different host 使用ProcessBuilder从Java运行可执行文件 - Using ProcessBuilder to run executable from Java 无法从ProcessBuilder运行其他Java程序? - Could not run another java programs from ProcessBuilder? 如何使用Java ProcessBuilder从CMD提示符执行SQL文件 - How to execute SQL file from CMD prompt using Java ProcessBuilder 在提示输入用户名密码的java中运行shell命令 - run shell command in java that prompt for username password Java-ProcessBuilder-Linux-在输出流中未捕获提示 - java - processbuilder - linux - prompt not captured in output stream 从Java代码打开命令提示符并运行一些命令并阅读cmd提示符显示? - open a command prompt from java code and run some commands and read the cmd prompt display?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM