Questa è solo una domanda sul vocabolario, ma che continua a girarmi nella mia testa.
Viene da un esame di pratica da un libro di preparazione LPIC . La risposta corretta secondo il libro è che ~/Documents
è una directory relativa perché è relativa alla directory home.
Tuttavia, questo libro contiene un rapporto onorevole di errori di battitura ed errori, quindi non posso dare per scontato tutto ciò che è scritto lì. Qui non sono d'accordo perché per me ~
agisce come una variabile espansa dalla shell nel contenuto della $HOME
variabile o nel percorso della directory home dell'utente corrente (cfr. man bash
), Quindi il percorso effettivo è /home/myuser/Documents
che è davvero una directory assoluta.
Anche Wikipedia , per una volta, non mi sembra di aiuto su questo argomento (anche se sembra confermare che il libro è sbagliato su questo):
Un percorso assoluto o completo punta alla stessa posizione in un file system indipendentemente dalla directory di lavoro corrente. Per fare ciò, deve contenere la directory principale.
Al contrario, un percorso relativo inizia da una determinata directory di lavoro, evitando la necessità di fornire il percorso assoluto completo.
Anche in questo caso, non sono d'accordo: secondo questa definizione, il percorso /opt/kde3/bin/../lib
che non dipende dalla directory di lavoro corrente dovrebbe essere assoluto, tuttavia la mia attuale comprensione di questo corrisponde all'autore del libro rendendo questo percorso relativo.
Una rapida ricerca sul web sta solo aggiungendo alla mia frustrazione, secondo Webster Dictionary :
percorso assoluto - Un percorso relativo alla directory principale. Il suo primo carattere deve essere il separatore del percorso.
Quindi $HOME/Documents
, o anche solo $HOME
non verrebbero considerati directory assolute? O questa definizione implica un'espansione variabile? E il ~
personaggio della shell ? Esiste una definizione affidabile di directory relativa o assoluta che posso trovare da qualche parte e mi sbaglio completamente?
~/foo
un percorso relativo. Quello che stai ottenendo è la differenza tra hard-coding e parametrizzazione. Vedi la mia risposta per maggiori dettagli.
~/Documents
e $HOME/Documents
non sono percorsi. Identificano percorsi (assoluti) dopo l'espansione, ma non sono percorsi stessi. Penso che sia d'accordo con quanti utenti Unix / Linux usano il termine, ma senza dubbio quelle stringhe sono anche chiamate percorsi stessi.
/
e quelli che chiamiamo assoluti. Così tutto quello che parte da/
che chiamerei assoluta (anche se questo è/usr/../etc
) e tutto il resto mi chiamerebbero relativa (~/Doc
,Doc
,../john/Doc
,$HOME/...
, ...). Il punto è che l'assoluto dovrebbe funzionare indipendentemente dalla directory di lavoro corrente o dall'utente corrente. Il parente può funzionare solo in alcuni casi specifici specifici.