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

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

"stty: standard input: Invalid argument" 

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

命令是这样的: {"/bin/csh", "-c", "echo hello"}

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

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

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

 stty blah blah blah 2>/dev/null 

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

请参阅java.lang.Process的文档:

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

也许你想要java.lang.ProcessBuilder 。

你看看这里吗? 我设法运行这样的命令