![使用环境变量完成 Bash tab 而不进行扩展](https://linux22.com/image/997826/%E4%BD%BF%E7%94%A8%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E5%AE%8C%E6%88%90%20Bash%20tab%20%E8%80%8C%E4%B8%8D%E8%BF%9B%E8%A1%8C%E6%89%A9%E5%B1%95.png)
我希望能够做到这一点:
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
,您可能想要使用~
,但这对我来说并没有扩展。