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í"