假设您有目录/dir1和/dir2/linked,其中目录是到目录的符号链接。
当您cd到达linkedand时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