`stty --file= 的效果 ` 对于 bash 中的控制台来说只是临时的。为什么?

`stty --file= 的效果 ` 对于 bash 中的控制台来说只是临时的。为什么?

打开两个控制台/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_terminalrl_deprep_terminal函数,间接调用edit_and_execute_command

相关内容