使用 Ubuntu 12.04。当我在终端中键入以env变量引用开头的路径时,我按 Tab 键完成一个单词,它转义$了env变量引用中的 。因此,我必须继续返回到行首并删除反斜杠,以便我可以继续沿着树向下导航。
标签前:
user@test:~$ $HOME/Docum
标签后:
user@test:~$ \$HOME/Documents/
我的 $HOME/.bashrc 启用了“bash_completion”。
小智 2
这是 Ubuntu 12.04 附带的 bash 版本的东西。
我能够从源代码编译 bash,将 bash 版本提升到 4.2.37,从而解决了该问题。
您在评论中提到您的实际问题不在于“$HOME”。这非常重要,因为它是否是环境变量很重要。
如果您以美元符号开头,Bash 将首先完成可能的环境变量,最后是文件名完成。因此,如果它找不到要为您完成的变量,它可能会找到一个文件名,在这种情况下,它将用反斜杠转义美元符号,因为这是一个特殊字符。
如果您使用程序启动命令,后跟一些变量,则完成可能会移交给可编程完成,这也可能导致这种情况。例如,输入 gzip $HOME/ 后跟 tab 将插入一个反斜杠。处理可编程完成的文件由“bash-completion”包所有,因此您可以卸载该包(我没有安装),或者您可以让他们相信这是一个错误。维护者: http: //bash-completion.alioth.debian.org/
更新:在 Arch Linux 上,我尝试了 bash-completion 版本 2.0,它按预期工作ls $HO<TAB>,但不是,ls $HOME/<TAB>所以我猜他们仍然没有解决这个错误(Ubuntu 使用版本 1.3)。您可以尝试手动安装2.0版本,但请注意,它不能完全运行。(由于错误报告还提到它可能是 bash,所以我使用版本 4.2.37 而不是 4.2.24)
| 归档时间: |
|
| 查看次数: |
2787 次 |
| 最近记录: |