从java调用shell,它抱怨“stty:标准输入:无效的参数”

时间:2010-03-29 08:13:41

标签: java bash csh

我从java调用Process类的shell命令并打印

"stty: standard input: Invalid argument" 

无论命令是对还是错(也显示了shell命令的正常输出)。如果我在shell中运行shell命令,则不会显示此类错误消息。

命令如下:{"/bin/csh", "-c", "echo hello"}

4 个答案:

答案 0 :(得分:7)

您正在调用stty.profile中的.bash_profile命令。您必须将其标准错误重定向到/dev/null

stty blah blah blah 2>/dev/null

stty无法处理Java在shelling中提供的伪tty。

答案 1 :(得分:4)

尝试使用csh的-f选项禁用.chsrc和.login文件的读取:

    {"/bin/csh", "-cf", "echo hello"}

答案 2 :(得分:1)

指出java.lang.Process的文档:

  

“创建流程的方法可以   不适用于特殊流程   某些本机平台,例如   本机窗口进程,守护进程   进程,Win16 / DOS进程   Microsoft Windows或shell脚本。   创建的子进程没有   它自己的终端或控制台。“

也许你想要java.lang.ProcessBuilder,而不是。

答案 3 :(得分:0)

你看这儿了吗? 我设法运行了一些命令,如this