Dies ist nur eine Frage des Wortschatzes, die sich in meinem Kopf ständig dreht.
Es stammt aus einer Übungsprüfung aus einem LPIC- Vorbereitungsbuch. Die richtige Antwort nach dem Buch ist, dass ~/Documents
es sich um ein relatives Verzeichnis handelt, da es sich um das Basisverzeichnis handelt.
Dieses Buch enthält jedoch ein beachtliches Verhältnis von Tippfehlern und Fehlern, so dass ich nicht alles als selbstverständlich ansehen kann, was dort geschrieben steht. Hier stimme ich nicht zu, da ich ~
als Variable durch die Shell entweder in den Inhalt der $HOME
Variablen oder in den Pfad des aktuellen Benutzer-Ausgangsverzeichnisses (vgl. man bash
) Erweitert werde. Der tatsächliche Pfad ist also in /home/myuser/Documents
der Tat ein absolutes Verzeichnis.
Selbst Wikipedia scheint mir diesbezüglich einmal keine Hilfe zu sein (auch wenn es zu bestätigen scheint, dass das Buch in diesem Punkt falsch ist):
Ein absoluter oder vollständiger Pfad verweist auf denselben Speicherort in einem Dateisystem, unabhängig vom aktuellen Arbeitsverzeichnis. Dazu muss es das Stammverzeichnis enthalten.
Im Gegensatz dazu beginnt ein relativer Pfad bei einem bestimmten Arbeitsverzeichnis, sodass nicht der vollständige absolute Pfad angegeben werden muss.
Auch hier stimme ich nicht zu: Nach dieser Definition sollte der Pfad, /opt/kde3/bin/../lib
der nicht vom aktuellen Arbeitsverzeichnis abhängt, ein absoluter Pfad sein. Mein derzeitiges Verständnis entspricht jedoch dem Autor des Buches, der diesen Pfad zu einem relativen Pfad macht.
Eine schnelle Websuche trägt laut Webster Dictionary nur zu meiner Frustration bei :
absoluter Pfad - Ein Pfad relativ zum Stammverzeichnis. Das erste Zeichen muss das Pfadnamentrennzeichen sein.
Also $HOME/Documents
, oder einfach $HOME
nur nicht als absolute Verzeichnisse gelten? Oder impliziert diese Definition eine variable Expansion? Was ist mit dem ~
Charakter der Muschel ? Gibt es eine verlässliche Definition des relativen und des absoluten Verzeichnisses, die ich irgendwo finden kann, und irre ich mich auf dem ganzen Weg?
~/foo
einen relativen Pfad zu nennen. Worauf es ankommt, ist der Unterschied zwischen Hardcodierung und Parametrisierung. Siehe meine Antwort für weitere Details.
~/Documents
und $HOME/Documents
keine Pfade sind. Sie identifizieren (absolute) Pfade nach der Erweiterung, aber sie sind selbst keine Pfade. Ich denke, das stimmt mit der Anzahl der Unix / Linux-Benutzer überein, aber ohne Zweifel werden diese Zeichenfolgen auch selbst Pfade genannt.
/
, und die, die wir als absolut bezeichnen. Also alles , was beginnt/
ich absolut nennen würde (auch wenn dies ist/usr/../etc
) und alles andere würde ich rufen relativ (~/Doc
,Doc
,../john/Doc
,$HOME/...
, ...). Der Punkt ist, dass absolut unabhängig vom aktuellen Arbeitsverzeichnis oder aktuellen Benutzer funktionieren sollte. Verwandte können nur in bestimmten engen Fällen arbeiten.