当使用 -T 和 -t 运行相同的 ssh 命令时,任何 stderr 输出分别到达 stderr 和 stdout。
没有分配 pty:ssh -T user@host "echo >&2 foo" 1>/tmp/out 2>/tmp/err
输出被写入/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
选择遵循惯例。
When not使用 tty,ssh
可以自由地将命令的 stdin、stdout 和 stderr 连接到 3 个独立的单向管道。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)