unix – 为什么OpenSSH RequestTTY导致stderr重定向到stdout?
当使用-T和-t运行相同的ssh命令时,任何stderr输出分别到达stderr和stdout.
没有pty分配: 输出写入/ tmp / err. 使用pty分配:ssh -t user @ host“echo>& 2 foo”1> / tmp / out 2> / tmp / err 输出现在写入/ tmp / out. 我有点理解,使用pty模拟完整的伪屏幕并且输出处于原始模式.然后,发送到屏幕的输出通过stdout发送回ssh,ssh的tty也设置为原始模式.有人可以进一步解释一下吗? 解决方法
tty没有单独的输出和错误通道.只有一个输出通道;无论你写什么,只需转到CRT,串口,终端窗口,调制解调器,打印机或连接到tty的任何东西.
在为运行命令分配tty时,ssh理论上可以将命令的stdin和stdout附加到tty,而相反,将命令的stderr附加到与tty完全独立的单独的stderr通道(管道).但是,这并不符合以下惯例:在tty上运行的命令应该将其所有3个stdio通道连接到同一个tty,并且某些命令可能会混淆或表现不同.所以ssh选择遵循惯例. 当不使用tty时,ssh可以自由地将命令的stdin,stdout和stderr附加到3个单独的单向管道. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |