使用环境变量完成 Bash tab 而不进行扩展

使用环境变量完成 Bash tab 而不进行扩展

我希望能够做到这一点:

cd $HOME/../[TAB]

并得到这个(其中$HOME作为变量名保持完整):

cd $HOME/../username/

但变量却被扩展了:

cd /home/username/../username/

这在搜索历史记录时对我特别有用。是否有一些选项可以启用此行为,还是需要重写部分脚本bash_completion

答案1

这需要修改bash_completion函数。该行为似乎是函数扩展单词以进行补全的结果。如果您在未加载补全脚本的情况下运行 bash,例如使用bash --norc,您将看到该行为正是您想要的。

另一方面,使用 zsh,完成功能可以同时提供以下功能:

~ echo $HOME/../
$HOME/../       /home/muru/../

对于的特殊情况$HOME,您可能想要使用~,但这对我来说并没有扩展。

相关内容