我有一个符号链接:
/path/to/foo -> /path/to/bar/foo
当/path/to/foo
我可能想要 cd 到/path/to/bar/foo
:
$ cd ../
Tab
然后没有自动完成。不过,我仍然可以cd
正常输入目录“bar”。
这是为什么?我可以使用什么设置或技巧来实现 tab 补全功能?
答案1
这是 bash-completion(第三方项目,与 bash 本身无关)中的一个错误。在 Ubuntu 中默认/etc/bash_completion
使用~/.bashrc
,在数千行代码(其中大部分代码您可能永远都不需要)中,有一个cd
内置的补全函数不能正确处理符号链接目录。如果您禁用内置的补全功能cd
,您的 tab 补全cd
应该会更符合您的预期。
complete -r cd