bash 中的隐形文本错误是错误还是功能?

9 bash shell

在过去 10 年中,我使用的每个 Linux 发行版都存在以下不便:您使用 bash 在终端中运行程序。程序停止或中断后,您键入的任何内容有时会不可见。然后您可以输入命令“reset”,屏幕被清除,光标再次可见。

由于这个错误,每当我第一次登录新终端时,我总是将 shell 更改为 zsh。在 zsh 中,看不见的文本错误永远不会发生。由于这个错误现在已经存在 10 多年了,我开始怀疑它是 bash 的一个特性。那么,谁能告诉我它有什么用?

此外,bash 主页/错误跟踪器实际位于何处。Bash.org 似乎是关于“IT bashing”,#bash irc 频道也是如此。为什么大多数 linux 发行版都包含一个很难提供反馈的 shell,而几个替代方案至少也一样好?

jm6*_*666 11

这只是意味着在 zsh 中你不能做这样的事情:

stty -echo     #turn off echoing what you type
stty echo      #turn on echoing
reset          #reset terminal to the default state
Run Code Online (Sandbox Code Playgroud)

在 bash 中,上述命令按预期工作 - 关闭命令回显。刚刚在 zsh 中尝试过 - 不起作用。谁有错误?;)

使用 ESC 序列可以关闭回显,因此如果您的程序随机将二进制序列发送到终端,{或者当您 CTRL-\ 某些面向屏幕的程序时),它的行为有时就像stty -echo您必须reset这样做。这不是错误 - 只是终端(和终端模拟器)的工作方式。

奇怪的是,为什么在 zsh 中stty -echo不起作用。

  • 在 zsh 中,您可以使用 `ttyctl -f` 来禁止更改终端模式,并使用 `ttyctl -u` 来允许它们。 (2认同)