Mac OS 终端 - 使用某些应用程序时,按 Ctrl-C 组合键后键盘回声中断

Mac OS 终端 - 使用某些应用程序时,按 Ctrl-C 组合键后键盘回声中断

我能够重现此问题的唯一两个应用程序是tailcat。如果我运行tail -f log/development.log或 任何文件,然后按 CTRL-C 退出,当我输入其他命令时,屏幕上不会出现键盘回显。如果我按 Enter 键,命令会运行并生成输出,但键盘回显仍然损坏。

有趣的是,我可以通过几种不同的方式恢复键盘回声:

1)stty echo

2)irb

运行其中任一命令都会恢复键盘回声,直到再次使用 CTRL-C 退出其中一个有问题的命令。

我尝试将我的终端仿真设置为 rxvt 和 xterm-color,但更改这个似乎没有什么区别。

答案1

要重置您的终端,请使用reset命令。

我不明白为什么tailcat造成这个问题,因为他们不应该做任何影响终端线路设置的事情。您使用的是 Terminal.app 还是其他终端?您使用的是 Bash 还是其他 shell?您正在运行吗screen?您是否还有其他可能使用 curses 或进行其他屏幕操作的东西?您是否有trapCtrl-C 的设置?

答案2

这是 MacPorts bash 补全的一个错误。错误报告是这里

我通过将 shell 更改为/opt/local/bin/bashmacports 提供的方法来修复此问题,方法是使用

答案3

总结一下 Michael 的发现:MacOS Bash 的原生版本v3.2.48(1)-release,加上 MacPorts 提供的 bash_completion 会导致一些命令(tail(1)cat(1)等)在终止后禁用 shell 中的 TTY 回显,具体描述如下:这个错误解决方法是使用 MacPorts 版本的 Bash,如此处所述

值得一提的是,我在使用 bash-completion 时也发现了同样的错误自制使用 Bash 的原始版本。

答案4

我在 ssh 会话中遇到此问题(我认为是运行 screen),该会话连接到 Linux 机器。如果我将rsync需要密码的命令传输到lessless可能会有点混乱。Ctrl-C 可以让我摆脱这种情况,但之后键盘回显有时不起作用。

@Michael Guterl 的解决方案解决了该问题:

stty echo

附言:我正在运行苹果内置的 bash:4.2.45(2)-release (i386-apple-darwin12.3.0)

相关内容