我的基本问题是为什么这两条路径都指向 home(即~
)?它指向同一个家还是重复的?
我怀疑它是重复的,所以如果不是,如何cd ..
决定将我带回哪个目录?
答案1
行为方式cd ..
取决于 shell、shell 设置以及是否涉及符号链接(在本例中很可能如此)。
bash-4.1$ cd /var/tmp
bash-4.1$ mkdir -p real/cats
bash-4.1$ ln -s real/cats dogs
bash-4.1$ cd dogs/
bash-4.1$ pwd
/var/tmp/dogs
bash-4.1$ pwd -P
/var/tmp/real/cats
bash-4.1$ cd ..
bash-4.1$ pwd
/var/tmp
bash-4.1$ set -o physical
bash-4.1$ cd dogs
bash-4.1$ pwd
/var/tmp/real/cats
bash-4.1$ cd ..
bash-4.1$ pwd
/var/tmp/real
bash-4.1$
调查/var/mail
目录ls
应该会显示是否有任何符号链接是由我猜是苹果公司完成的。
答案2
在 macOS 上(我猜这是因为你提到的/Users
),/var/mail/username
是mbox
user 的 -formatted 收件箱邮箱username
,并且/Users/username
是同一用户的主目录。
在普通的、未经修改的 macOS 安装上,/var/mail/username
将不是是到用户主目录的符号链接,也不是/Users/username
到/var/mail/username
.
cd ..
默认情况下会像这样工作cd -L ..
,即它会带你到逻辑的父目录而不是身体的父目录 ( cd -P ..
)。
来自ksh
macOS 上的手册:
默认情况下,查找目录名称时按字面意思处理符号链接名称。这相当于
-L
选项。该-P
选项会导致在确定目录时解析符号链接。命令行上-L
或的最后一个实例确定使用哪种方法。-P