从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 。
你看看这里吗? 我设法运行这样的命令