bash-完成(来自 Homebrew)未在 OSX 上完成变量

bash-completion (from Homebrew) not completing variables on OSX

我一直使用 bash 补全来节省打字时间。但是有一个奇怪的地方,我无法弄清楚如何解决 OSX.

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

例如,我为客户提供了所有 SSH 帐户的快捷方式...我可以直接输入 ssh $SSHCRAZY 而不是输入 ssh myuser@somecrazydomain.com,这样更容易记住。

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

观察到的行为:在bash中使用自制程序bash-完成添加,点击选项卡对环境变量没有影响。

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

在此先感谢您的帮助!

我想 bash-completion 一定已经为 ssh 定义了完成规则。所以尝试在 .bashrc 中添加 -o bashdefault 选项。例如,如果 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/')"

您可以考虑使用 SSH config file (~/.ssh/config) 来设置 SSH 快捷方式,而不是使用环境变量。你可以放入那个文件:

Host crazy
    HostName somecrazydomain.com
    User myuser

然后你可以输入 ssh crazy.