Shell 有了符号链接,为什么结果来自;ls.“;及;cd&引用;不同?
假设我执行以下命令: $ mkdir -p a/b $ ln -s a/b c $ cd c $mkdir-应付账款 $ln-s a/b c $cd cShell 有了符号链接,为什么结果来自;ls.“;及;cd&引用;不同?,shell,symlink,Shell,Symlink,假设我执行以下命令: $ mkdir -p a/b $ ln -s a/b c $ cd c $mkdir-应付账款 $ln-s a/b c $cd c 那么,在目录c中,为什么ls..显示目录a的内容,而cd..返回到原始目录?shell区分两种路径:反映磁盘上文件夹实际布局的物理路径和逻辑路径,其中考虑了符号链接。当您将工作目录更改为c(而不是a/b)时,shell知道当前目录的逻辑路径是~/c(假设a在主目录中),物理路径是~/a/b 在您的示例中,ls显示a的内容,因为是c的物理父目录的
那么,在目录c中,为什么
ls..
显示目录a的内容,而cd..
返回到原始目录?shell区分两种路径:反映磁盘上文件夹实际布局的物理路径和逻辑路径,其中考虑了符号链接。当您将工作目录更改为c
(而不是a/b
)时,shell知道当前目录的逻辑路径是~/c
(假设a
在主目录中),物理路径是~/a/b
在您的示例中,ls
显示a
的内容,因为是c
的物理父目录的实际文件系统条目。另一方面,工作目录是一个shell概念,cd
是一个shell内置命令。shell知道,虽然c
只是a/b
的另一个名称,但工作目录是c
,而不是a/b
。因此,它在逻辑上而不是在物理上解析。
POSIX标准为cd
命令指定了-L
和-p
选项,让您明确说出要遵循的路径。在您的示例中,cdc;cd-P..
应该把你放在~/b
而不是~
我相信你最后一行的例子是读cd c;cd-P..