gpt4 book ai didi

bash - 终止终端后是否可以执行 bash 脚本?

转载 作者:行者123 更新时间:2023-12-04 16:17:04 25 4
gpt4 key购买 nike

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

还有另一个名为 .bash_logout 的文件,它会在您退出终端时执行代码。

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

(.bash_logout 当终端被杀死时不要覆盖它)。

最佳答案

How I would execute some script when terminal is killed?

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

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

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

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

[ -t 0 ] 检查标准输入是否连接到终端。由于 || 仅当测试失败时才执行下一个命令,它在关闭终端时执行,但对于其他退出 bash 的常用方法(例如按 CtrlD 在提示符下或执行 exit)。

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

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

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

关于bash - 终止终端后是否可以执行 bash 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68510357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com