/Users/lukas
è un percorso "assoluto". Il leader /
rappresenta la directory principale del tuo filesystem.
lukas
è un percorso "relativo". Poiché non è ancorato alla radice, significa "cercare questo nella directory corrente ". A meno che la directory corrente non sia /Users
(o qualche altra directory che contiene al suo lukas
interno), ciò non riuscirà.
Quindi, esploriamo i tuoi esempi, supponendo che tu sia in /Users/lukas
:
$ cd Documents/
/Users/lukas/Documents
Percorso relativo indicato => modifica nella directory "Documenti" che si trova all'interno /Users/lukas
.
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Percorso assoluto indicato => modifica nella directory /Documents
.
$ pwd
/
Ciò dimostra che ora hai cambiato la directory di lavoro nella directory principale /
(sebbene il cd
comando per farlo non sia stato mostrato).
$ cd Users
/Users
Percorso relativo indicato => modifica nella directory "Utenti" all'interno /
.
$ cd /Users
/Users
Percorso assoluto indicato => modifica nella directory /Users
.
La chiave ogni volta è quella principale /
. Con esso, il percorso è assoluto. Senza di essa, il percorso è relativo. Questa regola non è ambigua perché iniziano tutti i percorsi assoluti /
(poiché la directory principale viene sempre chiamata /
).
Ecco alcuni pseudocodici che descrivono vagamente quell'algoritmo:
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
L'argomento a cui passi cd
passa attraverso questo algoritmo; la directory in cui finisci per cambiare è il percorso che restituisce l'algoritmo.
Ulteriori letture: