Terminal

防止應用程序篡改終端設置?

  • August 25, 2021

最近,越來越多的 GUI 應用程序(okular 和 inkscape 等)開始在它們處於活動狀態時禁用終端回顯。這似乎充其量是不必要的(如果您不將該過程作為背景,那麼無論如何您都不會輸入它,如果您這樣做了,誰在乎?如果您將它作為背景,它無論如何都沒有效果)。但更糟糕的是,如果你碰巧做錯了什麼並本能地用 ctrl-C 殺死它(例如,如果我不小心在許多文件上呼叫了 okular,我會這樣做),回顯將保持禁用狀態。這不是世界末日,但stty echo每次發生這種情況時都需要盲目輸入讓我感到緊張。

有沒有辦法告訴終端禁用切換這些設置?我認為修改 termcap 是可能的,但這就是我對它的了解結束的地方。當然,這可能會使不可見的密碼可見,但無論如何我想知道該怎麼做,打開一個防篡改終端就足夠了。

echo是終端設備的設置(tty 核心驅動程序中的學科部分),termcap 是關於通過轉義序列控制終端(真實或仿真器),它是兩個獨立的東西。

這裡要防止應用程序做特定的ioctl. 一種方法是將其與終端分離。

socat - exec:okular,pty,raw

將執行okular附加到不同的偽終端設備,socat並將數據從您的終端傳遞到該設備。

要傳遞任意參數,請使用zsh

okular() {
 CODE="$0 ${(j[ ])${(qq)argv}}
      " socat - 'system:"eval \"$CODE\"",pty,raw'
}

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