我再次涉足 Bash 的陷阱。我刚刚注意到 RETURN 陷阱不会触发函数。
$ trap 'echo ok' RETURN
$ f () { echo ko; }
$ f
ko
$ . x
ok
$ cat x
$
正如您所看到的,它按预期获取空文件x
。
Bash 是man
这样的:
如果 sigspec 为 RETURN,则每次使用 . 或源内置完成执行。
那我错过了什么?
我有 GNU bash,版本 4.4.12(1)-release (x86_64-pc-linux-gnu)。
据我了解,我的问题中的文档片段有一个例外。片段是:
此处描述了异常:
至于
functrace
,可以用typeset
's开启-t
:也
set -o functrace
有诀窍。这是一个插图。
至于
declare
,它又是一个-t
选项:还
extdebug
启用功能跟踪,如ikkachu 的回答。在 Bash 4.4 上,它似乎只适用于
extdebug
启用的功能,但我看不到文档中提到的内容。在 Bash 4.3 中,它似乎根本不适用于函数。