使 shell 命令在 git 挂钩中可用

make shell commands available in git hook

目标是让用户在 clone/checkout 回购后可以使用一些命令集。

git 挂钩文件

#!/bin/sh
echo $PWD/dev-commands.sh
source $PWD/dev-commands.sh

我想在 git 钩子名称 dev-commands.sh

之后提供的命令
#!/bin/sh
function greet() {
  echo Hello
}

这似乎无法使命令可用。如果我在目录中手动 运行 source dev-commands.sh 它确实使 greet 命令可用..

有什么建议吗?

来源函数在来源它们的 shell 中可用,而不是其 parent shell 中。这就是为什么当您编写 shell 脚本时,它可以使用自己的函数而不必担心会干扰其调用者的命令的含义。

( doit() { echo hi; }; doit ); doit

例如,会说 hi 然后很可能会抱怨 -bash: doit: command not found 或等效的消息,因为 parens 在那里将 doit 放入子 shell,它有自己的环境,就像git hooks.

在没有他人积极合作的情况下即时改变某人的 shell 命名空间可以而且将被准确地描述为恶意软件。

包括他们可以根据需要获取的设置命令。