通过bash函数在其他命令中包装git

时间:2015-01-26 02:27:07

标签: git bash shell applescript

所以我想在调用git之前和之后运行一段AppleScript(不是下面的AppleScript,不同的AppleScript,但这应该得到重点)。我遇到的问题是git命令有一个可变数量的参数,所以我不能只使用$1给它第一个,它必须是传入的数字。这里是我的代码.bash_profile

function git() {
    osascript -e 'display alert "before git command"';
    git "$@";
    osascript -e 'display alert "after git command"';
}

预期的结果是第一段AppleScript运行,git运行时提供了任何数量的参数,然后最后一段AppleScript运行。真正发生的是第一块苹果无限期地反复运行。我认为问题可能是git之后的"$@"。使用"$@"的{​​{3}}将转储所有参数。但是第一段AppleScript只是在无限循环中运行。是什么给了什么?

1 个答案:

答案 0 :(得分:1)

你破坏了git名称。您的函数为git,并在函数中调用git。恭喜你,你有递归。

你需要告诉shell在那里调用真正的 git二进制文件。

使用command git/full/path/to/git

还有\git(但我认为这只是避免了别名而不是功能)。

另外,正如@ryenus在评论中指出的那样。 env二进制/usr/bin/env/bin/env也可以用于此目的(尽管它不仅仅是避免该功能,还需要生成额外的外部进程)。