我最近在我的系统上安装了 Fedora Core 15,并且发生了我无法理解的行为变化。在 BASH shell 中使用 Tab-Complete 效果很好,除非我使用 $HOME 变量。
如果我输入cd $HOME/d
TAB,它会自动完成到正确的目录(doc),但它也会插入前面的\
,所以结果是cd \$HOME/doc
。然后这会失败,因为这样的路径不存在。
错误是
bash: cd: $HOME/doc: 没有这样的文件或目录
如果我不使用 Tab-Complete 它可以工作,因为 $HOME 仍然指向正确的目录。这些多余的东西从哪里来\
,我该如何让它消失?
答案1
通过发出该命令,complete
您将获得所有完成定义的列表。然后您可以在/etc/bash_completion
和中的某个位置搜索有问题的定义/etc/bash_completion.d
。.bash_completion
您的主目录中也可能有一些。在我的系统上,$HOME
变量已正确完成,但随后无法完成任何操作。
您是否尝试使用~
而不是$HOME
?打字更容易,并且按预期工作......
答案2
有一个选项
shopt -s direxpand
它在 Bash 4.1 上不起作用(这个不兼容的功能是在 BASH 4.2 中添加的),所以我将它用作
[[ $BASH_VERSION =~ ^4.[2-9] ]] && shopt -s direxpand