发现liunx文件系统的“bug”

Vim、Emacs配置和使用
回复
sarrow
帖子: 403
注册时间: 2007-10-27 1:04

发现liunx文件系统的“bug”

#1

帖子 sarrow » 2011-12-16 12:38

我将根目录下,两个分别叫document\files的文件夹,ln -s 到了“家”目录下面,分别叫
Document和Files(注意,首字母变成了大写!)

惊奇地发现,当我cd ~/Files后,再ls ..;

竟然,相当于在根目录下ls /!

cd ../Do<tab>

tab补全,也不管用了。(cd ~/Do<tab>这种补全,可以用。)

但是输入完全的话,还是能改变工作目录的。

我记得好像说,文件夹有记录..和.的指向的。发生上述现象,只能说明,ls是直接读取的
当前文件夹的..的信息。而没有去管逻辑上的工作目录。

不知道,这个“特性”算不算bug?
sarrow
帖子: 403
注册时间: 2007-10-27 1:04

Re: 发现liunx文件系统的“bug”

#2

帖子 sarrow » 2011-12-16 12:41

忘记说明了,我用的是ext4文件系统——不过,貌似与文件系统无关,感觉这个应该属于“上层”点的问题。

----------------------------------------------------------------------

描述不完全。

在~/Files下面,cd 命令,可以对非符号连接的文件夹名字,进行补全。只是,不能补全符
号连接的文件夹。

在正常的文件夹下面,则cd ../Do<tab>没有问题,是否符号连接的文件夹,都能补全。

这应该算是bash解释器的bug?
头像
poweroff
帖子: 395
注册时间: 2008-12-13 15:03

Re: 发现liunx文件系统的“bug”

#3

帖子 poweroff » 2011-12-16 13:10

bash特有的问题。
一条狗的马甲!
对不起,我承认我是一只穿着马甲的狗!
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 发现liunx文件系统的“bug”

#4

帖子 lilydjwg » 2011-12-16 17:41

zsh 好像也能设置成这样。你找找 shell 的相关选项吧。
头像
瓦特1
帖子: 383
注册时间: 2009-09-16 22:54

Re: 发现liunx文件系统的“bug”

#6

帖子 瓦特1 » 2011-12-16 20:20

linux对大小写敏感
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: 发现liunx文件系统的“bug”

#7

帖子 自由建客 » 2011-12-16 22:18

poweroff 写了:bash特有的问题。
tcsh 也这样!
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

Re: 发现liunx文件系统的“bug”

#8

帖子 Fermat618 » 2011-12-17 1:01

就应该这样啊。

目录也是文件,链接指向文件,访问链接会访问那个文件。而..和.也是文件夹里面的一个成员。所以,你访问一个链接后再.., 就是访问那个链接所对应的文件的.., 当应该是原来所在目录的父目录了。
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

Re: 发现liunx文件系统的“bug”

#9

帖子 Fermat618 » 2011-12-17 1:03

lilydjwg 写了:zsh 好像也能设置成这样。你找找 shell 的相关选项吧。
我想你是把cd 默认是 cd -L 还是 cd -P 和这个搞混了吧。cd是shell内建命令,归shell管,但ls ../xxx 不是shell内置,不归shell管的。这个要能在shell里设置那还了得。
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 发现liunx文件系统的“bug”

#10

帖子 lilydjwg » 2011-12-17 1:08

Fermat618 写了:
lilydjwg 写了:zsh 好像也能设置成这样。你找找 shell 的相关选项吧。
我想你是把cd 默认是 cd -L 还是 cd -P 和这个搞混了吧。cd是shell内建命令,归shell管,但ls ../xxx 不是shell内置,不归shell管的。这个要能在shell里设置那还了得。
他「cd ~/Files后」,又没有「pwd」下,你怎么知道它当时不是在「/files」下呢?
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 发现liunx文件系统的“bug”

#11

帖子 lilydjwg » 2011-12-17 1:12

Fermat618 写了:
lilydjwg 写了:zsh 好像也能设置成这样。你找找 shell 的相关选项吧。
我想你是把cd 默认是 cd -L 还是 cd -P 和这个搞混了吧。cd是shell内建命令,归shell管,但ls ../xxx 不是shell内置,不归shell管的。这个要能在shell里设置那还了得。
好吧,我弄错了。这个现象的解释如下:

代码: 全选

10021 ~tmp
>>> ln -s /var test # 测试用的软链接
10022 ~tmp
>>> cd test
10024 ~tmp/test
>>> ls -id ..      # 注意到了吗,~tmp/test 下的 .. 文件 inode 号为 2...
2 ..
10025 ~tmp/test
>>> ls -id /       # ...它就是 / 了
2 /
所以,那个 .. 文件指向了 /,读出来自然就是 / 下的文件列表了。
zhaowenwei
帖子: 57
注册时间: 2009-02-03 10:16

Re: 发现liunx文件系统的“bug”

#12

帖子 zhaowenwei » 2012-02-06 1:24

楼主你这个是软链接啊 就是这样的cd 进了 / 下的file
回复