Bash 和 Tab 自动完成

Bash 和 Tab 自动完成

我最近在我的系统上安装了 Fedora Core 15,并且发生了我无法理解的行为变化。在 BASH shell 中使用 Tab-Complete 效果很好,除非我使用 $HOME 变量。

如果我输入cd $HOME/dTAB,它会自动完成到正确的目录(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

相关内容