终止终端后是否可以执行 bash 脚本?
Is it possible to execute a bashscript after kill a terminal?
我知道有一个名为 .bash_profile
的文件会在您打开终端时执行代码 (bashscript)。
还有另一个名为 .bash_logout
的文件会在您退出终端时执行代码。
当终端被杀死时我将如何执行一些脚本?
(.bash_logout
终端被杀死时不要覆盖这个)。
How I would execute some script when terminal is killed?
我将其解释为 “在终端 window 关闭时执行脚本”。为此,请在 .bashrc
或 .bash_profile
中添加以下内容:
trap '[ -t 0 ] || command to execute' EXIT
当然你可以用 source ~/.bash_exit
替换 command to execute
并将所有命令放在你的主目录中的文件 .bash_exit
中。
每当 shell 退出时执行特殊的 EXIT 陷阱(例如通过关闭终端,也可以通过按 CtrlD,或执行 exit
,或 ...)。
[ -t 0 ]
检查 stdin 是否连接到终端。由于 ||
仅当测试失败时才执行下一个命令,关闭终端时会执行此操作,但不会用于其他退出 bash 的常用方法(例如按 Ctrl D 在提示符下或执行 exit
).
失败的尝试(仅当您尝试查找和替代时才读)
在我听说过的终端中,当 window 关闭时,bash 总是收到一个 SIGHUP 信号。有时甚至会有两个 SIGHUP;一个来自终端,一个来自 pty(伪终端)关闭时的内核。然而,有时两个 SIGHUP 都在交互式会话中丢失,因为 bash 的 readline temporarily uses its own traps。 St运行够厉害的是,当存在 EXIT 陷阱时,SIGHUP 似乎总是会被捕获;即使那个 EXIT 陷阱什么都不做。
但是,我强烈建议不要在 SIGHUP 上设置任何陷阱。 Bash 仅在当前命令完成后处理非 EXIT 陷阱。如果您 运行 sh -c 'while true; do true; done'
并关闭了终端,bash 将在后台继续 运行,就像您使用 disown
或 nohup
一样。
我知道有一个名为 .bash_profile
的文件会在您打开终端时执行代码 (bashscript)。
还有另一个名为 .bash_logout
的文件会在您退出终端时执行代码。
当终端被杀死时我将如何执行一些脚本?
(.bash_logout
终端被杀死时不要覆盖这个)。
How I would execute some script when terminal is killed?
我将其解释为 “在终端 window 关闭时执行脚本”。为此,请在 .bashrc
或 .bash_profile
中添加以下内容:
trap '[ -t 0 ] || command to execute' EXIT
当然你可以用 source ~/.bash_exit
替换 command to execute
并将所有命令放在你的主目录中的文件 .bash_exit
中。
每当 shell 退出时执行特殊的 EXIT 陷阱(例如通过关闭终端,也可以通过按 CtrlD,或执行 exit
,或 ...)。
[ -t 0 ]
检查 stdin 是否连接到终端。由于 ||
仅当测试失败时才执行下一个命令,关闭终端时会执行此操作,但不会用于其他退出 bash 的常用方法(例如按 Ctrl D 在提示符下或执行 exit
).
失败的尝试(仅当您尝试查找和替代时才读)
在我听说过的终端中,当 window 关闭时,bash 总是收到一个 SIGHUP 信号。有时甚至会有两个 SIGHUP;一个来自终端,一个来自 pty(伪终端)关闭时的内核。然而,有时两个 SIGHUP 都在交互式会话中丢失,因为 bash 的 readline temporarily uses its own traps。 St运行够厉害的是,当存在 EXIT 陷阱时,SIGHUP 似乎总是会被捕获;即使那个 EXIT 陷阱什么都不做。
但是,我强烈建议不要在 SIGHUP 上设置任何陷阱。 Bash 仅在当前命令完成后处理非 EXIT 陷阱。如果您 运行 sh -c 'while true; do true; done'
并关闭了终端,bash 将在后台继续 运行,就像您使用 disown
或 nohup
一样。