Bash

stty --file=<terminal> <flag> 的效果僅對 bash 中的控制台是臨時的。為什麼?

  • February 23, 2017

打開兩個控制台/X 終端。從附加到/dev/tty1(Linux 控制台)或/dev/pts/0(X 終端)的一個中,執行$ stty -echo. (現在回顯到鍵盤已關閉。)然後從另一個執行$ stty --file=/dev/tty1 echo.

現在在第一個終端中輸入一些內容。它呼應了,ok,最後stty生效了。但是一旦你按下輸入鍵,它就會恢復到-echo狀態。為什麼是這樣?有可能永久改變嗎?

這不適用於 stty 標誌的某些組合,至少不適用於“echo / -echo”。當 `$ stty –file= ’ 從同一個終端執行時,它會永久影響。

NB Zsh 有自己的 stty 策略。看到這個問題

編輯:在第一篇文章中,我沒有報告這發生在 bash 中,但沒有在 dash 中發生。還添加了對 zsh 案例的提及。

您的 shell 會這樣做,以幫助您編輯命令行。

bash 的 readline 庫保存/恢復終端模式。您可以在rl_prep_terminalandrl_deprep_terminal函式中看到這一點,從edit_and_execute_command.

引用自:https://unix.stackexchange.com/questions/346078