关闭 Zsh shell(或终端)时是否可以调用脚本?

Is it possible to invoke a script, when closing a Zsh shell (or the terminal)?

当我关闭我的 (Zsh) shell(and/or 终端模拟器)时,是否可以 运行 脚本?

我经常使用特定配置打开终端。在关闭它之前,我想被问到,以避免意外关闭它(经常发生)。

check/ask 的脚本很简单,但我想知道如何挂钩它。

如果 shell 是 login-shell,文件 ~/.zlogout 将被执行,因此您可以将命令放在那里。

对于其他情况,您可以设置一个 trap 命令来捕获 shell 的正常 exit,或者可能会杀死您的 shell 的信号。除了通常的 trap 命令外,ZSH 还允许您定义 trap-functions(请参阅 zshmisc[=24= 中的 Trap Functions 部分] man-page)。例如,如果您定义了一个名为 TRAPEXIT 的函数,它会在 shell 退出时执行。

我不知道你的终端程序如何对待它产生的进程,所以如果你只是关闭终端,我不能说在硬杀死它之前先发送一个可捕获信号是否足够礼貌方式。