![当给定不完整的目录名称时 cd 自动选择是标准行为吗?](https://linux22.com/image/65756/%E5%BD%93%E7%BB%99%E5%AE%9A%E4%B8%8D%E5%AE%8C%E6%95%B4%E7%9A%84%E7%9B%AE%E5%BD%95%E5%90%8D%E7%A7%B0%E6%97%B6%20cd%20%E8%87%AA%E5%8A%A8%E9%80%89%E6%8B%A9%E6%98%AF%E6%A0%87%E5%87%86%E8%A1%8C%E4%B8%BA%E5%90%97%EF%BC%9F.png)
我有三个名为ProjectA
、ProjectB
和的文件夹ProjectC
。当我tab
完成并按下cd
时,它会选择。我发现其他类似的案例也是如此;它默认为字典顺序中的最后一个(但这也可能是最近更改/添加的)。cd Project
EnterProjectC
这是预期的默认行为cd
,还是我在这里意外设置了某些内容?
我运行的是 OSX 10.10.3,带有 bash 4.3。
答案1
我没有遇到这种行为。但我能够重现它。也许您不小心更改了选项cdspell
。请参阅Bash 参考手册:
cd拼写
如果设置,将更正 cd 命令中目录组件的拼写小错误。检查的错误有字符调换、字符缺失和字符过多。如果发现更正,则打印更正的路径,然后继续执行命令。此选项仅由交互式 shell 使用。
我尝试过,它总是纠正给出的参数中的路径cd
。如果存在多种可能性(例如在文件夹中带有ProjectA
、ProjectB
和ProjectC
),则默认为目录顺序中的最后一个。您可以通过检查ls -U
。参见示例:
user@host:~$ ls -Ul
total 0
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectA
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectB
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectC
user@host:~$ cd Project<tab><tab>
ProjectA/ ProjectB/ ProjectC/
user@host:~$ cd Project
ProjectC
user@host:~/ProjectC$
要禁用该行为,请使用:
shopt -u cdspell