bash
garde une trace du chemin logique du répertoire actuel, comme indiqué dans votre invite, et interprète des choses comme cd ..
d'après ça. Cela rend les choses un peu plus cohérentes si vous n'utilisez ces chemins que dans cd
(ou pushd
), au prix de choses inattendues si vous vous attendez à ce que la même chose se produise avec les chemins dans les arguments de commande (ou à l'intérieur des commandes ; emacs
et vim
ont leurs propres règles configurables pour la gestion des liens symboliques, mais la plupart des commandes dépendent du noyau pour les gérer).
Selon help cd
,
Options:
-L force symbolic links to be followed: resolve symbolic
links in DIR after processing instances of `..'
-P use the physical directory structure without following
symbolic links: resolve symbolic links in DIR before
processing instances of `..'
En d'autres termes, -L
signifie utiliser la logique structure, alors que -P
utilise réellement le physique structure de répertoire.
La structure logique est comme ceci,
$ tree a
a
└── b
└── symlink -> ..
La structure physique réelle lorsque vous allez à a/b/symlink
est,
a
Si vous voulez utiliser le réel ..
, alors vous devez également utiliser cd -P
:
The -P option says to use the physical directory
structure instead of following symbolic links (see
also the -P option to the set builtin command);
the -L option forces symbolic links to be followed.
Un exemple,
$ cd
$ cd a/b/symlink # physical location is at a/
$ cd .. # now is at a/b
$ cd symlink # goes back to a/b/symlink
$ cd -P .. # follow physical path (resolve all symlinks)
$ pwd -P # -P is optional here to show effect of cd ..
/home/sarnold
$