Git 钩子没有执行 gulp 没有绝对路径

Git hook not executing gulp without absolute path

我在预提交上有一个 git 钩子(写在 bash 中),它应该执行命令 "gulp".

当我手动 运行 bash 脚本时,它工作得很好。 但是当commit完成后,hook脚本被调用并执行却没有生效,和手动调用一样

钩子脚本如下所示:

#!/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 命令似乎没有 return 任何东西。

我一定是遗漏了什么,但我不知道是什么,对这个问题有什么想法吗?

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

which gulp 不会在这里给你任何结果,因为它也使用 $PATH.