Questo è il comportamento standard di Unix.
Il /
all'inizio del percorso rappresenta la radice del disco (o il livello iniziale/superiore dell'albero del filesystem). Come Documents
non è fuori dalla radice, /Documents
non può essere trovato.
/Users
è fuori dalla directory principale, quindi questo problema non si verifica.
Potresti usare cd /Users/lukas/Documents
per passare a quel percorso.
In alternativa, puoi utilizzare l'indirizzamento relativo. I filesystem basati su Unix hanno 2 directory speciali:
.
che significa "questa directory",..
che significa la directory principale.
Se sei in /Users/lukas
, cd ./Documents
ti porterebbe nel posto giusto.
Supponiamo che tu fossi in /Users/Lukas/Documents
e volevo andare a /Users/Janes/Documents
, potresti emettere un comando cd ../../Janes/Documents
- usando ..
ti riporterebbe indietro di un livello, quindi lo faresti due volte, prima di entrare nel nuovo percorso relativo.
/Users/lukas
è un percorso "assoluto". Il /
principale rappresenta la directory root del tuo filesystem.
lukas
è un percorso "relativo". Poiché non è ancorato alla radice, significa "cercalo nella corrente directory". A meno che la directory corrente non sia /Users
(o qualche altra directory con un lukas
in esso), questo fallirà.
Quindi, esploriamo i tuoi esempi, supponendo che tu sia in /Users/lukas
:
$ cd Documents/
/Users/lukas/Documents
Percorso relativo fornito => passaggio alla directory "Documents" che si trova all'interno di /Users/lukas
.
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Percorso assoluto dato => passa alla directory /Documents
.
$ pwd
/
Questo mostra che ora hai cambiato la directory di lavoro nella directory root, /
(sebbene il cd
comando per eseguire questa operazione non è stato mostrato).
$ cd Users
/Users
Percorso relativo fornito => modifica alla directory "Utenti" che si trova all'interno di /
.
$ cd /Users
/Users
Percorso assoluto dato => passa alla directory /Users
.
La chiave ogni volta è quella iniziale /
. Con esso, il percorso è assoluto. Senza di esso, il percorso è relativo. Questa regola non è ambigua perché tutti i percorsi assoluti iniziano con /
(poiché la directory root è sempre chiamata /
).
Ecco uno pseudocodice che descrive vagamente quell'algoritmo:
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
L'argomento che passi a cd
passa attraverso questo algoritmo; la directory in cui finisci per passare è il percorso restituito dall'algoritmo.
Ulteriori letture:
- Tutorial su file e directory Unix
Giuseppe L. Zachary
"Introduzione alla programmazione scientifica"