我的自定义git子命令已停止工作

时间:2014-12-10 11:07:28

标签: git bash

我的~/bin目录中有一些自定义git子命令。它们是名为git-foobar的简单bash脚本,它们曾用于工作,例如git foobar。 (~/bin目录位于我的PATH上。)

我最近注意到他们已经停止工作,我无法弄清楚原因。脚本本身没有改变。但是我的PATH有......

前段时间我将.git/safe/../../bin添加到我的路径中。我们的想法是让项目的./bin目录中的项目可执行文件更容易运行,即您可以键入deploy而不是bin/deploy。为安全起见,“已知安全”项目在PATH上有bin目录,通过触摸safe目录中的.git文件可将项目标识为安全。当然,在其他任何地方,前缀指向的位置都不存在。

使用前缀,运行子命令(例如git foobar)会导致git: 'foobar' is not a git command. See 'git --help'.脚本本身可以在PATH上找到,因为git-foob<tab>自动填充到git-foobar并运行;但是git并不认为它是一个子命令。

当我删除这个前缀时,我的git子命令再次起作用...虽然git的自动完成没有(我认为它曾用于我的自定义子命令)。即输入git foob<tab>不会自动完成git foobar

似乎.git/safe/../../bin PATH前缀打破了git搜索子命令的方式,以及git的自动完成。

有谁可以解释发生了什么?我怎么能让事情再次发挥作用呢?

1 个答案:

答案 0 :(得分:4)

问题原来是使用波浪号。当我用~/bin替换/Users/andy/bin时,一切正常。

(这当然有用。我想知道Apple对shellshock响应bash的更新是否会影响PATH中的波浪扩展。)