打开两个控制台/X 终端。从附加到/dev/tty1
(Linux 控制台)或/dev/pts/0
(X 终端)的一个,运行$ stty -echo
. (现在键盘回显已关闭。)然后从另一个运行$ stty --file=/dev/tty1 echo
。
现在在第一个终端中输入一些内容。回显,ok,最后stty
生效了。但一旦按下回车键,它就会恢复到-echo
状态。为什么是这样?永久改变可能吗?
这不适用于 stty 标志的某些组合,至少不适用于“echo / -echo”。当从同一终端运行“$ stty --file=”时,它会永久影响。
注意 Zsh 对于 stty 有自己的策略。看这个问题
编辑:在第一篇文章中,我未能报告这种情况发生在 bash 中,但不是在 dash 中。还添加了对 zsh 案例的提及。
答案1
您的 shell 执行此操作是为了帮助您编辑命令行。
bash 的 readline 库保存/恢复终端模式。您可以在rl_prep_terminal
和rl_deprep_terminal
函数,间接调用edit_and_execute_command
。