【发布时间】:2016-01-31 17:38:29
【问题描述】:
如果您在 PATH 中创建一个名为 git-mydiff 的 shell 脚本,其中包含:
#!/bin/bash
exec git diff
并在有大量更改的存储库中调用git mydiff,当您退出分页器时,它会输出:
error: git-mydiff died of signal 13
但是,如果直接执行path/to/git-mydiff,退出pager时不会报错。
显然,一种解决方案是不使用exec,但为什么会出现问题?为什么只有通过git代理命令调用脚本时出现问题?
我正在使用:git 版本 2.5.4 (Apple Git-61)
【问题讨论】:
-
一种可能性是像stackoverflow.com/a/22464942/5781248一样忽略SIGPIPE
-
@J.J.Hakala 我试过了,但似乎没有用。因为
exec完全用新程序替换了当前正在运行的程序,我不认为信号陷阱是继承的。这在这里讨论:stackoverflow.com/questions/24111981/…
标签: git unix process signals exec