终端 Tab 键不会自动完成,而是尝试 运行 我的脚本

Terminals Tab key does not autocomplete, instead attempts to run a script of mine

所以我不确定这是一个错误还是我在没有意识到的情况下更改了设置。

每当我使用 Tab 键自动完成 git-bash 中的参数时,它会尝试 运行 我的脚本三次。

mike@Puter:~/workspace/project$ git bash: ./run_proxy_tests.sh: No such file or directory
bash: ./run_proxy_tests.sh: No such file or directory
bash: ./run_proxy_tests.sh: No such file or directory

我只输入了 "git " 并按下了 Tab,然后它尝试 运行 该脚本。显然,如果我在正确的目录中,它实际上会执行 运行 脚本三次。

这只会在键入 "git " 后发生。我试过其他命令,它按预期的方式工作。

我已经采取的步骤:

1. System reboot
2. Checked ~/.bashrc && ~/.bash_aliases for an alias that may cause this
3. tried different terminals and multiplexers (tmux, tillix, terminal) (The problem exists in all)
4. sudo apt-get --remove git then reinstalled

编辑:我还应该补充一点,如果我输入 "git checkout " || 也会发生同样的情况"git add "等

我真的想不出会发生这种情况的任何其他原因。有人有什么想法吗?

我找到了解决方案。现在想想真是个菜鸟。

在我的 ~/.bash_aliases 中,我有一个这样写的别名:

alias test="./run_proxy_tests.sh -p ~/workspace/project/project-proxy.linux.x86_64 -l 1"

我通过淘汰的过程发现,如果我把它注释掉。问题消失了。

但是为什么会这样呢?为什么按tab键运行是别名。并且仅当 运行 执行 git 命令时。

好吧,我在 "git-completion.bash" 文件中查看了 git 的 git 存储库。并发现:

    while test -n "$rest"; do

怪不得运行3次

故事的寓意: 命名别名时更明确

参考: https://github.com/git/git/blob/master/contrib/completion/git-completion.bash#L132