bash中的cd <nonexistent_directory>会导致cd到其他目录吗?

用户名

好的,所以我已经使用Linux 18年了,从未见过这样的事情:

starting-forth$ ls
ch01/  ch02/  ch04/  ch05/  ch06/  text/
starting-forth$ cd ch07  # A directory I thought I might exist, but didn't
ch04
ch04$

??!好的,只是要确保:

ch04$ pwd
/home/m/learn/forth/starting-forth/ch04

我的shell是bash,在Manjaro Linux上的XFCE会话中的虚拟终端[确切地说是LilyTerm]中。认为我没有进行任何怪异的自定义设置,并且该系统作为一个整体是相当新的(2014年10月首次安装在新笔记本电脑上)。

那么,任何人都不知道是什么原因造成的?

更新:我以前没有发生过的一个事实(尽管我不知道为什么会这样)是在Git工作目录中进行的。

更新2:显然,只要存在一个名称相同的现有目录(最后一个字符(或两个字符?)除外),就会出现这种现象,因为我尝试使用cd来查找不存在的目录。例如:

[tmp]$ mkdir dxx17903
[tmp]$ cd dxx17907
dxx17903
[tmp]$ cd dxx179035
dxx17903
[dxx17903]$ cd ..
[tmp]$ cd dxx179005
bash: cd: dxx179005: No such file or directory
[tmp]$ cd dxx179
bash: cd: dxx179: No such file or directory
[tmp]$ cd dxx1790
dxx17903
[dxx17903]$ cd ..
[tmp]$ mkdir foot
[tmp]$ mkdir food
[tmp]$ cd fool
foot
[foot]$ cd ..
[tmp]$ cd football
bash: cd: football: No such file or directory
[tmp]$ cd foo
foot
[foot]$

依此类推...看来,当有多个“匹配”目录(以这种奇怪且不希望的方式)时,您转到的目录是第一个创建的目录。

史考特

查看

shopt cdspell

如果设置cd了该目录,而您又找到了一个不存在的目录,那么外壳程序将查看是否存在一个名称与您键入的名称相似的目录。(它假定你犯了一个拼写错误)如果发现类似你键入的内容的东西,它认为那是你的意思,它是出了名的不加选择的-如果有好几个名字类似于您键入的内容(例如cabcadcancapcar,和cat),它会挑人,看似随意。

或者,也许是最先出现在目录中的那个(可能是最早的一个)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章