为什么 pts/1 上的 `stty -a < /dev/pts/0` 的输出与 pts/0 上的 `stty -a` 不同?

为什么 pts/1 上的 `stty -a < /dev/pts/0` 的输出与 pts/0 上的 `stty -a` 不同?

如果我输入stty -aon pts/0,它会显示icanon其他标志,这是预期的。

但是,如果我stty从不是我当前所在的 (bash) shell 的控制终端的终端运行,它会输出-icanon.总结一下:

  • stty -a < /dev/pts/0pts/0, 给出icanon, 与stty -a
  • stty -a < /dev/pts/0pts/1, 给出-icanon
  • stty -a < /dev/pts/1pts/1, 给出icanon, 与stty -a
  • stty -a < /dev/pts/1pts/0, 给出-icanon

这是怎么回事?

答案1

您的终端设备的线路规则不处于规范模式当 shell 的命令行编辑器处于活动状态时。当 GNU Readline、ZLE、editline 或其他命令行编辑库主动呈现其编辑器时,shell 已将终端行规则切换为非规范模式。想一想。行编辑器对控制字符(包括特殊字符)有自己的解释,并且在键入每个字符时立即做出响应,因此无法以任何其他方式使用终端 I/O。

每当行编辑器完成一行时,就会恢复规范模式。转到第一个伪终端,运行运行一段时间的外部命令,例如sleep, 和然后查看从另一个伪终端报告的内容。

相关内容