防止应用程序篡改终端设置?

防止应用程序篡改终端设置?

最近,越来越多的 GUI 应用程序(okular 和 inkscape 等)开始在活动时禁用终端回显。这似乎充其量是不必要的(如果您不将进程设置为后台,则无论如何您都不会输入它,如果您这样做了,谁在乎?如果您将其设置为后台,它无论如何都不会产生任何效果)。但更糟糕的是,如果你碰巧做错了什么并本能地用 ctrl-C 杀死它(例如,如果我不小心在许多文件上调用 okular,我就会这样做),echo停留禁用。这不是世界末日,但stty echo每次发生这种情况时都需要盲目打字让我感到紧张。

有没有办法告诉终端禁用切换这些设置?我认为修改 termcap 是可能的,但我对它的了解就到此为止了。当然,这可能会使不可见的密码变得可见,但我想知道如何做到这一点,打开一个防篡改终端就足够了。

答案1

echo是终端设备的设置(tty 内核驱动程序中的纪律部分),termcap 是通过转义序列控制终端(真实终端或模拟器),它是两个独立的东西。

这里你想要阻止应用程序执行特定的操作ioctl。一种方法是将其与终端分离。

socat - exec:okular,pty,raw

okular将连接到不同的伪终端设备运行,socat并将数据从您的终端传递到该设备。

要传递任意参数,请使用zsh

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

相关内容