un chemin absolu n'est pas unique?

On y discute de tout, ou presque...
Répondre
tony
Membre
Membre
Messages : 292
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

trop long à expliquer le comment j'en suis arrivé là, mais que penser de cet exemple:

Code : Tout sélectionner

~$ cat /home/mmas/.profile
......lecture du fichier ~/.profile

~$ cat /etc/../home/mmas/.profile
......lecture du même fichier
et donc le chemin absolu le plus court est appelé "canonique", est-ce correct? Et re-donc je me demande si ce que j'ai lu sur un site que je consulte souvent car je le trouve très clair dans ses explications est bien correct:
The full path of a file is also known as its absolute or canonical path.
site
Debian 12/ Xfce
Avatar de l’utilisateur
zargos
Membre
Membre
Messages : 108
Inscription : 07 juil. 2023, 13:34
Status : Hors-ligne

Le deuxième cas n'est pas un chemin absolu car il utilise une partie relative (../)
Avatar de l’utilisateur
diesel
Membre
Membre
Messages : 203
Inscription : 29 oct. 2022, 22:43
Status : Hors-ligne

Oui, et le .. signifie le retour en arrière.

Dans ton deuxième exemple, on part de / (la racine) et on va dans le répertoire etc. Puis, via le /../, on revient à la racine, puis on va dans home/mmas/.profile. On va donc bien pointer le même fichier.

C'est comme si tu faisais :

Code : Tout sélectionner

cd /etc
cd ..
cd home/mmas
cat .profile
Amicalement.

Jean-Marie
tony
Membre
Membre
Messages : 292
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

je vais faire confiance à wikipedia:
Un chemin qui a été composé peut être normalisé (par exemple transformation de 'a/b/../c/./d' à 'a/c/d') ; la normalisation vers le chemin absolu le plus court représentant le même chemin est la mise en forme canonique de chemin de fichier, elle produit un chemin canonique.
Debian 12/ Xfce
Avatar de l’utilisateur
franb
Membre
Membre
Messages : 111
Inscription : 04 nov. 2017, 09:41
Status : Hors-ligne

C'est compliqué surtout si on rajoute les liens, mais pas seulement, je laisse les gens méditer là dessus:

Code : Tout sélectionner

[/tmp]$ echo "toto" > toto
[/tmp]$ cat /tmp/toto
toto
[/tmp]$ ln toto titi
[/tmp]$ echo titi > /tmp/toto
[/tmp]$ cat /tmp/toto
titi
[/tmp]$ echo complique > /proc/self/cwd/toto
[/tmp]$ cat /tmp/toto
complique
[/tmp]$ cd ..
[/]$ echo encorecomplique > /proc/self/cwd/tmp/toto
[/]$ cat /tmp/toto
encorecomplique
[/]$ echo marcheplus > /proc/self/cwd/toto
bash: /proc/self/cwd/toto: Permission non accordée
[/]$ 
Répondre