Ceci est simplement une question de vocabulaire, mais qui ne cesse de tourner dans ma tête.
Il provient d'un examen pratique d'un livre de préparation LPIC . La réponse correcte selon le livre est qu’il ~/Documents
s’agit d’un répertoire relatif, car il est relatif au répertoire de base.
Cependant, ce livre contient un nombre honorable de fautes de frappe et d’erreurs et je ne peux donc pas tenir pour acquis tout ce qui y est écrit. Ici, je ne suis pas d’accord, car ~
j’agis comme une variable développée par le shell dans le contenu de la $HOME
variable ou dans le chemin du répertoire de base de l’utilisateur actuel (cf. man bash
). Le chemin réel est /home/myuser/Documents
donc un répertoire absolu.
Même Wikipedia , pour une fois, ne me semble d'aucune aide sur ce sujet (même s'il semble confirmer que le livre est faux sur celui-ci):
Un chemin absolu ou complet pointe vers le même emplacement dans un système de fichiers, quel que soit le répertoire de travail en cours. Pour ce faire, il doit contenir le répertoire racine.
En revanche, un chemin relatif commence à partir d’un répertoire de travail donné, évitant ainsi de fournir le chemin absolu complet.
Là encore, je ne suis pas d'accord: selon cette définition, le chemin /opt/kde3/bin/../lib
qui ne dépend pas du répertoire de travail actuel devrait être absolu, mais ma compréhension actuelle correspond à celle de l'auteur du livre, ce qui en fait un chemin relatif.
Une recherche rapide sur le Web ne fait qu'ajouter à ma frustration, selon le dictionnaire Webster :
chemin absolu - Un chemin relatif au répertoire racine. Son premier caractère doit être le séparateur de chemin d'accès.
Alors $HOME/Documents
, ou même tout simplement $HOME
, ne seraient pas considérés comme des répertoires absolus? Ou cette définition implique-t-elle une expansion variable? Qu'en est-il du ~
caractère de la coquille ? Existe-t-il une définition fiable du répertoire relatif par rapport au répertoire absolu que je peux trouver quelque part et que je me trompe complètement?
~/foo
un chemin relatif. Vous voulez en venir à la différence entre codage en dur et paramétrage. Voir ma réponse pour plus de détails.
~/Documents
et $HOME/Documents
ne sont pas des chemins. Ils identifient les chemins (absolus) après l'expansion, mais ils ne sont pas eux-mêmes des chemins. Je pense que cela correspond au nombre d'utilisateurs d'Unix / Linux qui utilisent ce terme, mais il ne fait aucun doute que ces chaînes sont également appelées chemins.
/
et ceux que nous appelons absolus. Ainsi , tout ce qui commence par/
je qualifierais absolue (même si cela est/usr/../etc
) et tout ce que j'appelleraient relatif (~/Doc
,Doc
,../john/Doc
,$HOME/...
, ...). Le fait est que absolute devrait fonctionner quel que soit le répertoire de travail en cours ou l'utilisateur actuel. Un parent ne peut fonctionner que dans certains cas précis.