杀死终端后是否可以执行bashscript?

我知道有一个名为的文件.bash_profile,它在您打开终端时执行代码(bashscript)。

还有另一个文件被调用.bash_logout,当您退出终端时执行代码。

当终端被杀死时我将如何执行一些脚本?

.bash_logout当终端被杀死时不要覆盖这个)。

回答

当终端被杀死时我将如何执行一些脚本?

我将此解释为“在终端窗口关闭时执行脚本”。为此,请在您的.bashrcor 中添加以下内容.bash_profile

trap '[ -t 0 ] || command to execute' EXIT

当然,您可以将所有命令替换command to executesource ~/.bash_exit并将所有命令放在.bash_exit主目录中的文件中。

每当 shell 退出时,都会执行特殊的 EXIT 陷阱(例如,通过关闭终端,但也可以通过按CtrlD提示,或执行exit, 或 ...)。

[ -t 0 ]检查 stdin 是否连接到终端。由于||下一个命令仅在该测试失败时执行,它在关闭终端时执行,但不适用于其他常见的退出 bash 的方式(例如按下CtrlD提示或执行exit)。

失败的尝试(仅当您尝试查找和替代时才读取)

在我听说过的终端中,当窗口关闭时,bash 总是会收到一个 SIGHUP 信号。有时甚至有两个 SIGHUP;一个来自终端,一个来自内核,当 pty(伪终端)关闭时。但是,有时在交互式会话中两个 SIGHUP 都会丢失,因为 bash 的readline 临时使用了它自己的 traps。奇怪的是,当存在 EXIT 陷阱时,SIGHUP 似乎总是被捕获;即使那个 EXIT 陷阱什么也不做。

但是,我强烈建议不要在 SIGHUP 上设置任何陷阱。Bash 仅在当前命令完成后处理非 EXIT 陷阱。如果您运行sh -c 'while true; do true; done'并关闭终端,bash 将继续在后台运行,就像您使用了disown或 一样nohup


以上是杀死终端后是否可以执行bashscript?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>