![绝对/规范/相对路径](https://linux22.com/image/119711/%E7%BB%9D%E5%AF%B9%2F%E8%A7%84%E8%8C%83%2F%E7%9B%B8%E5%AF%B9%E8%B7%AF%E5%BE%84.png)
绝对/规范/相对路径有什么区别?
我猜绝对值以 开头/
。可以包含吗/../
?
规范路径与绝对路径的不同之处在于它不能包含 吗/../
?
是foo
相对路径吗?
谷歌搜索posix canonical path
并没有找到太多结果...这些术语的 POSIX 参考资料是什么?
答案1
POSIX定义“绝对路径名”如下:
以单个或两个以上 <slash> 字符开头的路径名
和“相对路径名”如下:
不以 <slash> 字符开头的路径名。
这就是相对路径和绝对路径的全部内容。
POSIX 中未定义规范路径,但该术语通常指可比较的路径,IE如果您采用文件系统对象的两个路径,并将它们转换为规范形式,当且仅当两个文件系统对象相同时,结果应该相同。正如您提到的,这涉及删除“..”,但这也意味着解决符号链接;所以规范路径可以定义为
一个路径名,其组成部分都是真实的目录或文件,不包括“.”。和“..”,其斜线不重复
在 POSIX 术语中,规范路径名实际上是解析路径名(只要您接受只能为存在的文件系统对象确定规范路径名)。
请注意,这只有效,因为不允许使用硬链接目录......
所以回答你的问题:
- 绝对路径可以包含
/../
; - 规范路径不能包含
/../
,也不能包含/./
,//
(可以说位于第一个位置的除外)或符号链接; foo
是相对路径。
(迂腐地说,它们都是路径名字,不仅仅是路径。)