检查 Bash 中是否设置了陷阱

Check if trap is set in Bash

有没有办法检查在 Bash 中设置了哪些 trap(在当前会话或脚本中)?

理想情况下,我希望能够获得分配了 trap 的信号列表,但如果这不可能,我可以单独检查每个信号。

让我们定义一个函数如下:

$ function f
> {
> echo trapped
> }

让我们将陷阱设置为分配给 SIGINT

的函数
$ trap f SIGINT

让我们列出设置的陷阱:

$ trap
trap -- 'f' SIGINT
trap -- '' SIGTSTP
trap -- '' SIGTTIN
trap -- '' SIGTTOU

您可以查看所有陷阱,或查看特定信号的陷阱:

$ trap            # show all traps for all signals
$ trap -p SIGINT  # only show traps for SIGINT
$ trap -p EXIT    # only show traps for EXIT