Bash
stty --file=<terminal> <flag>
的效果僅對 bash 中的控制台是臨時的。為什麼?
打開兩個控制台/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_terminal
andrl_deprep_terminal
函式中看到這一點,從edit_and_execute_command
.