假设您有目录/dir1
和/dir2/linked
,其中目录是到目录的符号链接。
当您cd
到达linked
and时pwd
,您将获得输出/dir2/linked
。如果这样的话cd ..
,你会被戴上/dir2
。此行为与您/dir2/linked
之前的想法一致。但是,据我了解,..
任何目录的父目录()都存储在目录inode中(即:物理上在磁盘中)。显然,既然/dir2/linked
是true /dir1
,那么inode上的父目录必须是/
为了进一步使问题复杂化,而里面/dir2/linked
的输出ls ..
和cd .. ; ls .
是不同的!似乎是在cd
尊敬符号链接的路径,而在ls
尊敬“物理”路径。就像这个问题中提到的那样,这里cd -P
有用例。
man pwd
提到了“物理”和“逻辑”工作目录,但目前我仍然有几个问题:
PWD
如所述,此行为是否总是由环境变量提供的man pwd
?- 如果它们都是shell命令(即不是程序),为什么要默认
cd
并ls
具有不同的行为? - 是否使用典型程序(而非shell命令)
PWD
代替物理路径?我知道这取决于实现,但是有经验法则吗?
1
在大量的信息这个答案
—
斯特凡Chazelas
@StéphaneChazelas这是一个了不起的答案,感谢您的分享
—
goncalopp 2015年
别客气。如果您打算自己回答自己的问题,请随时从此处复制粘贴文本。
—
斯特凡Chazelas