Ubuntu 22.04 LTS 有时会弄乱 shell 中的新行

Ubuntu 22.04 LTS 有时会弄乱 shell 中的新行

这是我运行脚本时有时看到的图像:

在此处输入图片描述

这是同一脚本正常运行时的图像:

在此处输入图片描述

这种情况有时会发生。大概是 20% 或 30%。

知道为什么会发生这种情况以及如何防止它吗?

答案1

这被称为“阶梯效应”,是由于数据通过内核到达终端时缺少 LF -> CR LF(又名\n-> )转换造成的。\r\n

应用程序应该发出\n,但这会导致终端将光标移动到下一行,而不会返回到第一列。终端也需要\r才能返回那里。转换在内核的 tty 处理(线路规则)中发生(或不发生),取决于 ONLCR 标志。

stty比较终端正常运行时的输出和异常运行时的输出,我很确定您会看到一个-onlcr条目出现。

通过执行恢复正常行为stty onlcr

(有关详细信息,请参阅https://unix.stackexchange.com/a/151963

我无法判断这种错误设置发生的原因是什么。可能是 bash-5.2 中的一个错误,没有正确恢复 stty 设置(bash 需要在执行命令时和等待输入下一个命令时来回切换它们)。或者可能是您之前启动的另一个应用程序使终端处于此状态(可能是在非正常退出之后,例如^C)。请留意您的哪些操作触发了此行为,如果您发现了问题,请告诉我们。

答案2

同样,stty已经启用。我通过使用以下包onlcr暂时解决了这个问题:unbufferexpect

unbuffer ./script.sh

F。

相关内容