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.
我在预提交上有一个 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.