今天我在我们的一个测试服务器上发现了一些非常有趣的东西(至少对我而言):
我可以使用相对路径从我的实际工作目录更改为现有目录,但使用时不会列出该目录ls -a
。
这是shell会话(as root
):
$ pwd
/you/are/here
$ ls -a
. .. <-- Note: "somedir" is not shown to root
$ echo $CDPATH
$ cd somedir <-- But still: "cd" works fine
$ pwd
/you/are/here/somedir
$ cd ..
$ pwd
/you/are/here
$ ls -a
. ..
有人能告诉我,这怎么可能呢?我已经检查:ls
是/bin/ls
,和pwd
是/bin/pwd
,无论是从原来的包(我的意思是:不是黑客攻击)。
/you
是一个已安装的EMC磁盘(ext3)。并somedir
存在,因为我可以列出它的内容(有几个子目录,文件)。它的名字不是以点开头。
更多shell会话,有关命令和ls
输出的更多信息:
root@U-TEST@AT$/bin/ls -ali
total 4
16515074 drwxrwxr-x 2 U8000966 test 2048 Sep 1 07:39 .
16515073 drwxrwxr-x 3 U8000966 test 2048 Apr 27 2006 ..
root@U-TEST@AT$ls -ali somewhere | head -5
total 182
16515075 drwxrwxr-x 43 U8000966 test 2048 Sep 1 07:39 .
16515074 drwxrwxr-x 2 U8000966 test 2048 Sep 1 07:39 ..
16519169 drwxrwxrwx 4 U8000966 test 2048 Jul 25 2007 AAA
16515124 drwxrwxr-x 3 U8000966 test 2048 May 12 2006 BBB
root@U-TEST@AT$type ls
ls is aliased to `/bin/ls $LS_OPTIONS'
root@U-TEST@AT$type pwd
pwd is a shell builtin
root@U-TEST@AT$/bin/pwd
/you/are/here
root@U-TEST@AT$cd somewhere
root@U-TEST@AT$/bin/pwd
/you/are/here/somewhere
root@U-TEST@AT$type cd
cd is a shell builtin
请注意第一个之后的总计4ls -ali
。(我不知道它是否相关......)
更多测试:
root@UR-TEST@AT$ls
. ..
root@U-TEST@AT$touch somewhere/testfile
root@U-TEST@AT$ls
. ..
root@U-TEST@AT$cp somewhere/testfile ./
root@U-TEST@AT$ls
. .. testfile
root@U-TEST@AT$du .
2 .
root@URBIS-TEST@AT$
EMC是:http://www.emc.com/products/family/disk-library-family.htm,但在这种情况下,它们只是一个磁盘提供商,带有硬盘,格式为ext3。
UPDATE
(对不起,但昨天我不得不离开)
我做了检查echo *
,其输出是:. ..
。这是LS_OPTIONS
:-a -N --color=tty -T 0
。
我检查了Gilles提到的automount事情,但是当我改变somewhere
并发出了mount|grep somewhere
没有输出的时候。
这是建议的输出lsattr
和strace
输出:http://gist.github.com/566947
somedir
确实存在?打字时有线索ls -a /you/are/here/somedir
吗?
ls -a
没有列出somedir
(到root
),但仍然cd somedir
可以正常工作。
ls is aliased to /bin/ls $LS_OPTIONS
。那么,那echo $LS_OPTIONS
给你什么呢?(虽然我怀疑这是相关的,而你也明确地使用/bin/ls
相同的结果,和有趣的“总共4”...)
echo *
,ls -ld somedir
,ls -lb
或ls -l|cat -v
显示任何东西有用吗?