没有绝对路径,Git挂钩不执行gulp

时间:2016-06-19 10:05:53

标签: git bash gulp hook sh

我在预提交时有一个git hook(用bash编写),它应该执行命令“gulp”。

当我手动运行bash脚本时,它完美无缺。 但是当提交完成时,钩子脚本被调用并执行但是不起作用的方式与手动调用时相同。

钩子脚本如下所示:

#!/bin/sh

touch log.txt #For testing purposes
pwd > log.txt
gulp >> log.txt

exit 0

直接手动调用脚本没有问题。

但是当git在提交时调用时,日志文件很好地创建,执行pwd并写入日志的路径(这与我手动运行时的路径相同)。但不知何故,如果我不写/usr/bin/gulp而不是gulp之类的东西,gulp命令就不会被执行。

我尝试过这样的事情:

#!/bin/sh

touch log.txt #For testing purposes
pwd > log.txt

path=$(which gulp)
echo $path >> log.txt
$path >> log.txt

exit 0

但是再一次,当没有手动启动时,which命令似乎没有返回任何内容。

我必须遗漏一些东西,但我不知道这个问题有什么想法?

1 个答案:

答案 0 :(得分:0)

最有可能的是,您没有为运行git挂钩的用户正确配置PATH环境变量。只是为了确定,执行/usr/bin/id >> log.txt(完整路径可能因系统而异)或echo $USER >> log.txt找出哪个用户运行脚本,然后检查该用户的$ PATH。 PATH可以在/etc/profile/etc/environment和用户~/.bashrc | ~/.bash_profile | ~/.profile | ~/.shrc中定义,具体取决于您的系统和你的外壳。

which gulp在这里没有给你任何结果,因为它也使用$ PATH。