/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将通过此算法;最终更改到的目录是算法返回的路径。
进一步阅读: