在 MacOS 上,操作系统的默认 bash 是 3.2。
如果我运行help trap
它,它表示如果 signal_spec 是 DEBUG,则该命令已运行后每个命令,但 bash 联机帮助页显示它已运行前每个命令。该 bash 的实际行为与联机帮助页一致(即前命令)。
我下载了4.4.18(1)的源代码并构建了它。联机帮助页都help trap
显示陷阱已执行前每个命令。然而,即便如此,每份文档的文本都略有不同。
所以我天真的假设help
内置读取/解析手册页显然是不正确的。
那么从哪里help
获取它转发给用户的信息呢?
答案1
啊,经过几级源代码生成后,它被烘焙到可执行文件中。
因此,各种内置定义文件中都有文档,这些文档builtins.c
由mkbuiltins
.
我猜想 MacOS bash 联机帮助页已更新,以反映带有 DEBUG signal_spec 的 trap 的正确行为,而定义源未更新且可执行文件已重建。