真实路径 -L 与 -P

真实路径 -L 与 -P

来自 coreutils 手册

-L --logical符号链接在指定的文件名中解析,但它们在..处理任何后续组件之后解析。

-P --physical符号链接在指定的文件名中解析,并且在..处理任何后续组件之前解析它们。这是默认的操作模式。

我是否正确地认为两个选项之间的区别在于处理符号链接和处理的顺序..

您能否解释一下这两个选项有何不同,并提供一些示例?

谢谢。

答案1

是的,区别在于处理顺序..和符号链接。

下面是一个示例,说明这将如何产生影响。我在 处安装了一个外部磁盘/root/Archives,并且有一个从我家指向它的符号链接:

$ pwd
/home/katsura

$ ls -ld Archives
lrwxrwxrwx 1 root root 14 Oct 23  2013 Archives -> /root/Archives

realpath解析符号链接:

$ realpath Archives
/root/Archives

$ realpath -L Archives
/root/Archives

然而:

$ realpath Archives/../foo
/root/foo

$ realpath -L Archives/../foo
/home/katsura/foo

如果没有选项(或使用-P),首先解析符号链接,因此Archives变为/root/Archives,然后..应用。

-L首先应用..,因此Archives/..变为/home/katsura,然后其余的符号链接已解决。由于没有留下符号链接,因此结果只是/home/katsura.

相关内容