Qual è la differenza tra cammini assoluti/canonici/relativi?
Immagino che l'assoluto inizi con un /
. Può contenere /../
?
Un percorso canonico è diverso da un percorso assoluto in quanto non può contenere /../
?
È foo
un percorso relativo?
Google posix canonical path
non è uscito molto... Quali sono i riferimenti POSIX per questi termini?
Risposta accettata:
POSIX definisce "percorso assoluto" come segue:
Un percorso che inizia con uno o più di due caratteri
e "percorso relativo" come segue:
Un percorso che non inizia con un carattere
Questo è tutto ciò che c'è da fare per i percorsi relativi e assoluti.
I percorsi canonici non sono definiti in POSIX, ma il termine di solito si riferisce a percorsi comparabili, cioè se si prendono due percorsi per un oggetto del file system e li si converte in forma canonica, il risultato dovrebbe essere identico se e solo se i due oggetti del file system sono identici. Ciò comporta la rimozione di ".." come dici tu, ma significa anche risolvere i collegamenti simbolici; quindi un percorso canonico potrebbe essere definito come
Un percorso i cui componenti sono tutte directory o file reali, escluso "." e “..”, e le cui barre non vengono ripetute
In termini POSIX, un percorso canonico è effettivamente un percorso risolto (purché accetti che i percorsi canonici possono essere determinati solo per oggetti del file system esistenti).
Nota che questo funziona solo perché le directory con collegamento reale non sono consentite...
Quindi, per rispondere alle tue domande:
- un percorso assoluto può contenere
/../
; - un percorso canonico non può contenere
/../
, né può contenere/./
,//
(tranne probabilmente in prima posizione), o collegamenti simbolici; foo
è un percorso relativo.
(Pedantamente, sono tutti nomi di percorso , non solo percorsi.)