bash-completion(来自Homebrew)没有在OSX上完成变量

时间:2015-02-16 11:44:38

标签: macos bash bash-completion

我一直使用bash完成来保存输入。然而,有一个奇怪的是我无法弄清楚如何修复OSX。

如果我使用Homebrew(brew install bash-completion)安装bash-completion并在.bashrc中设置它,则tab键将不再完成环境变量。如果没有安装,环境变量完成将按预期工作。

例如,我的客户端所有SSH帐户都有快捷方式...而不是键入ssh myuser@somecrazydomain.com我只需输入ssh $SSHCRAZY即可更容易记住。

预期的行为:在OSX中的内置bash中,我可以键入ssh $SSHC并点击tab,它会按预期完成整个命令。这就是我想要的。

观察到的行为:在使用自制bash-completion添加的bash中,点击标签对环境变量没有影响。

注意:需要bash-completion项目添加的所有其他扩展名(git命令完成等)。我不想卸载它,我只是希望它使用环境变量。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

我猜bash-completion必须为ssh定义完成规则。因此,请尝试在-o bashdefault中添加.bashrc选项。例如,如果complete -p ssh输出如下:

# complete -p ssh
complete -F _func ssh
#

然后您可以将其添加到.bashrc(或.bash_profile):

complete -F _func -o bashdefault ssh

eval "$(complete -p ssh | sed 's/ssh$/-o bashdefault ssh/')"