为什么`rm -rf`在git post-receive hook中使用而不是shell时表现不同?

我正在使用
this example on publishing a website w/ git post receive hooks.

钩子几乎将裸仓库克隆到临时目录中,并在生成站点后删除该临时git克隆.

#!/bin/sh
# clone a repo, generate site etc
# done generating site, remove the TMP_GIT_CLONE
rm -rf $TMP_GIT_CLONE

当我执行推送时,所有其他任务都很好,但不会删除所有文件.

我得到了以下错误:

remote: rm: <TMP_GIT_CLONE>/.git/objects/pack: Directory not empty
remote: rm: <TMP_GIT_CLONE>/.git/objects: Directory not emppty

你明白了

但是,当我直接从命令行调用post-receive脚本时,rm的行为与预期的一样.

为什么?

注意:我看过Post-hook receive act’s differently to shell,其中提问者的问题与裸仓而不是工作树有关.

最佳答案 使用

which rm

得到rm的路径,例如. /斌/ RM

然后用/ bin / rm替换它再试一次.有时,它是由shell脚本的启动脚本发生的.

点赞