有一段时间,我的bash没有显示我写的东西("回显"?),每次打开新会话时我都必须运行reset
命令。
我只是通过在~/.bashrc的末尾添加reset
来"修复"它,但这不是最好的解决方案,因为它在我的通用设置中是计算机特定的垃圾,而且这个命令需要时间。
我应该怎么做才能永久修复这些设置
有趣的是,例如,当我意外地对二进制文件进行cat时,就会发生这种情况。更普遍地说,当有东西向终端写入ansi控制字符/序列并破坏它时(我认为),就会发生这种情况。原因非常依赖于环境,弄清楚为什么会在您的机器上发生这种情况不太适合stackoverflow的Q/A格式。然而,一些人已经提供了如何自动重置终端的线索。
没有永久的解决方法,但你可以通过定义来做一些聪明的事情
PROMPT_COMMAND=__prompt_command
在那。。。
如果stty报告-echo,则运行stty echo。
PROMPT_COMMAND=zumba
zumba() { PS1="$: "; stty | grep -qe -echo && stty echo; }
老实说,我不确定这是否会对你的shell产生不利影响——比如一些非交互式进程中断或一些ncurses程序中断。
除了提示命令,您还可以使用DEBUG陷阱技巧在每个命令之前运行一些东西
请参阅:https://superuser.com/questions/175799/does-bash-have-a-hook-that-is-run-before-executing-a-command