J'essaie d'émuler le processus de résolution de chemin (voir la page de manuel path_resolution) dans les systèmes de type Unix.
Mon OS est Linux avec GNU coreutils 8.7.
Afin de clarifier la signification de «/» de fin supplémentaire dans la résolution, j'ai fait les choses suivantes dans un shell:
mkdir this_is_dir
ln -s this_is_dir this_is_link
rm this_is_link
Tout allait bien, car this_is_link est un lien symbolique, et je viens de le supprimer. Mais en essayant:
mkdir this_is_dir
ln -s this_is_dir this_is_link
rm this_is_link/
Cela a fait écho rm: cannot remove 'this_is_link/': Is a directory
Eh bien, je pensais que le '/' de fin provoquait le suivi du lien symbolique. J'ai donc essayé une autre commande:rmdir this_is_link/
Et un résultat amusant est sorti: rmdir: failed to remove 'this_is_link/': Not a directory
Pas ce à quoi je m'attendais. J'ai donc demandé à mon ami de confirmer si le même résultat pouvait être obtenu sur son système. Il avait une version de coreutils inférieure à la mienne. Et le résultat était incroyable, peu importe rm
ou rmdir 'this_is_link/'
, la même erreur Not a directory
se produit .
Et un autre ami vient de l'essayer sur son Mac OS, le résultat est: rm
=> 'Est un répertoire', rmdir
=> le répertoire est supprimé avec succès, le lien est resté .
Existe-t-il des spécifications sur le comportement exact de la résolution du chemin?