在关闭之前让 gnome-terminal 请求用户确认

ynn*_*ynn 5 command-line gnome-terminal signal

当您在gnome-terminal没有任何选项的情况下打开并执行阻止命令(例如python3,vimcat),然后尝试通过关闭按钮(即x标题栏中的按钮)或某些键盘快捷键关闭窗口时,将显示一个确认窗口:

在此处输入图片说明

但是,当您gnome-terminal使用指定的执行命令打开时,即以 形式gnome-terminal -- python3打开时,确认窗口不再显示,并且在您(不小心)单击关闭按钮后立即关闭该窗口。

即使使用表格,是否也可以显示确认窗口gnome-terminal -- <command>?如果这是不可能的,是否有任何解决方法?


环境:

$ gnome-terminal --version
# GNOME Terminal 3.36.2 using VTE 0.60.3 +BIDI +GNUTLS +ICU +SYSTEMD
Run Code Online (Sandbox Code Playgroud)

我试过的:

  • 所有支持的信号配备信号处理程序的执行命令不起作用;尽管该过程在捕获SIGHUP(三次),SIGCONT(一次)和SIGWINCH(一次)时在关闭过程中幸存下来,但在没有确认的情况下仍然关闭了窗口。我还必须执行kill -SIGKILL <process id>以终止该进程。

  • 我发现了一个例外。执行 时gnome-terminal -- bash显示确认信息(尽管默认情况下与 相同gnome-terminal)。

Mat*_*usz 3

GNOME 终端检查是否有 shell 启动的前台进程(请参阅terminal_screen_has_foreground_process函数)

您可以使用 sh 创建新进程并使用 gnome-terminal 在退出前进行询问:

gnome-terminal -- sh -i -c python3
Run Code Online (Sandbox Code Playgroud)

更新:使用自定义脚本使用 bash 可以达到相同的效果:

gnome-terminal -- bash -i my_script.sh
Run Code Online (Sandbox Code Playgroud)

的内容my_script.sh只是

python3
Run Code Online (Sandbox Code Playgroud)