Jaký je rozdíl mezi absolutními / kanonickými / relativními cestami?
Myslím, že absolutní začíná /
. Může obsahovat /../
? ?
Liší se kanonická cesta od absolutní cesty tím, že nemůže obsahovat /../
?
Je foo
relativní cestu?
posix canonical path
na Googlu moc se neobjevilo... Jaké jsou odkazy POSIX pro tyto výrazy?
Přijatá odpověď:
POSIX definuje „absolutní název cesty“ následovně:
Cesta začínající jedním nebo více než dvěma
znaky
a „relativní název cesty“ takto:
Cesta nezačíná znakem
.
To je vše pro relativní a absolutní cesty.
Kanonické cesty nejsou v POSIX definovány, ale termín obvykle odkazuje na srovnatelné cesty, tj. pokud použijete dvě cesty k objektu systému souborů a převedete je na kanonickou formu, výsledek by měl být shodný tehdy a pouze tehdy, když jsou dva objekty systému souborů totožné. To zahrnuje odstranění „..“, jak uvádíte, ale také to znamená vyřešení symbolických odkazů; takže kanonická cesta by mohla být definována jako
Cesta, jejíž komponenty jsou všechny skutečné adresáře nebo soubory, kromě „.“ a „..“ a jejichž lomítka se neopakují
Z hlediska POSIX je kanonická cesta v podstatě vyřešená cesta (pokud souhlasíte s tím, že kanonická cesta může být určena pouze pro objekty systému souborů, které existují).
Všimněte si, že to funguje pouze proto, že pevně propojené adresáře nejsou povoleny…
Takže abych odpověděl na vaše otázky:
- absolutní cesta může obsahovat
/../
; - kanonická cesta nesmí obsahovat
/../
, ani nemůže obsahovat/./
,//
(s výjimkou pravděpodobně na první pozici) nebo symbolické odkazy; foo
je relativní cesta.
(Pedanticky jsou to všechna cestajména , nejen cesty.)