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
.
我一直使用 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
.