/Users/lukas
é um caminho "absoluto". O líder /
representa o diretório raiz do seu sistema de arquivos.
lukas
é um caminho "relativo". Como não está ancorado na raiz, significa "procure por isso no diretório atual ". A menos que o diretório atual seja /Users
(ou algum outro diretório com um lukas
), isso falhará.
Então, vamos explorar seus exemplos, supondo que você esteja /Users/lukas
:
$ cd Documents/
/Users/lukas/Documents
Caminho relativo fornecido => mude para o diretório "Documents" que está dentro /Users/lukas
.
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Caminho absoluto dado => mude para o diretório /Documents
.
$ pwd
/
Isso mostra que você agora mudou o diretório de trabalho para o diretório raiz /
(embora o cd
comando para fazer isso não tenha sido mostrado).
$ cd Users
/Users
Caminho relativo fornecido => mude para o diretório "Usuários" que está dentro /
.
$ cd /Users
/Users
Caminho absoluto dado => mude para o diretório /Users
.
A chave de cada vez é essa liderança /
. Com isso, o caminho é absoluto. Sem ele, o caminho é relativo. Esta regra é inequívoca porque todos os caminhos absolutos começam com /
(porque o diretório raiz é sempre chamado /
).
Aqui estão alguns pseudocódigos que descrevem livremente esse algoritmo:
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
O argumento para o qual você passa cd
passa por esse algoritmo; o diretório para o qual você acaba alterando é o caminho que o algoritmo retorna.
Leitura adicional: