/Users/lukas
是一条“绝对”的道路。前导/
代表文件系统的根目录。
lukas
是一条“相对”路径。由于它没有锚定到根,因此它意味着“在当前目录中查找”。除非当前目录是/Users
(或其中有一个其他目录lukas
),否则它将失败。
因此,假设您处于/Users/lukas
以下位置,让我们探索您的示例:
$ cd Documents/
/Users/lukas/Documents
给定的相对路径=>更改为内部的目录“ Documents” /Users/lukas
。
$ cd /Documents
-bash: cd: /Documents: No such file or directory
给定的绝对路径=>更改为目录/Documents
。
$ pwd
/
这表明您现在已将工作目录更改为根目录/
(尽管cd
未显示执行此操作的命令)。
$ cd Users
/Users
给定的相对路径=>更改为inside的目录“ Users” /
。
$ cd /Users
/Users
给定的绝对路径=>更改为目录/Users
。
每次的关键是领先/
。有了它,路径是绝对的。没有它,路径是相对的。该规则是明确的,因为所有绝对路径都以/
(因为始终调用根目录/
)开头。
以下是一些伪代码,大致描述了该算法:
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
您传递给该参数的参数cd
将通过此算法;最终更改到的目录是算法返回的路径。
进一步阅读: