Toto je standardní chování Unixu.
/ na začátku cesty představuje kořen disku (nebo počáteční/nejvyšší úroveň stromu souborového systému). Jako Documents není mimo kořenový adresář, /Documents nelze najít.
/Users je mimo kořenový adresář, takže k tomuto problému nedochází.
Můžete použít cd /Users/lukas/Documents přejít na tuto cestu.
Případně můžete použít relativní adresování. Souborové systémy založené na Unixu mají 2 speciální adresáře:
.což znamená „tento adresář“,..což znamená nadřazený adresář.
Pokud jste v /Users/lukas , cd ./Documents by vás zavedl na správné místo.
Předpokládejme, že jste byli v /Users/Lukas/Documents a chtěl přejít na /Users/Janes/Documents , můžete zadat příkaz cd ../../Janes/Documents - pomocí .. by vás vrátilo o úroveň zpět – takže byste to udělali dvakrát, než se vydáte na novou relativní cestu.
/Users/lukas je "absolutní" cesta. Přední / představuje kořenový adresář vašeho souborového systému.
lukas je "relativní" cesta. Protože není ukotven ke kořenu, znamená to „hledejte to v aktuálním adresář". Pokud aktuální adresář není /Users (nebo nějaký jiný adresář s lukas v něm), to se nezdaří.
Pojďme tedy prozkoumat vaše příklady za předpokladu, že používáte /Users/lukas :
$ cd Documents/
/Users/lukas/Documents
Zadaná relativní cesta => změna do adresáře "Dokumenty", který je uvnitř /Users/lukas .
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Zadaná absolutní cesta => změna do adresáře /Documents .
$ pwd
/
To ukazuje, že jste nyní změnili pracovní adresář na kořenový adresář / (ačkoli cd příkaz k tomu nebyl zobrazen).
$ cd Users
/Users
Daná relativní cesta => změna do adresáře "Users", který je uvnitř / .
$ cd /Users
/Users
Zadaná absolutní cesta => změna do adresáře /Users .
Klíčem je pokaždé to, co vede / . S ním je cesta absolutní. Bez toho je cesta relativní. Toto pravidlo je jednoznačné, protože všechny absolutní cesty začínají / (protože kořenový adresář se vždy nazývá / ).
Zde je nějaký pseudokód volně popisující tento algoritmus:
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
Argument, který předáte cd prochází tímto algoritmem; adresář, do kterého se nakonec změníte, je cesta, kterou algoritmus vrátí.
Další čtení:
- Výukový program pro soubory a adresáře Unix
Josef L. Zachariáš
"Úvod do vědeckého programování"