Comportement du cd / bash sur les liens symboliques

Supposons que j'ai les dossiers ~/a/b dans mon dossier home, et le dossier b contient un lien symbolique '.."nommé" lien symbolique'. Puis j'effectue les actions suivantes dans bash:

[email protected]:~$ cd a/b/symlink
[email protected]:~/a/b/symlink$ pwd -P
/home/hm/a
[email protected]:~/a/b/symlink$ cd ..
[email protected]:~/a/b$ pwd -P
/home/hm/a/b

pwd-P imprime le répertoire de travail courant, déréférenciant tous les liens symboliques. Pourquoi le répertoire de travail / home/hm/a /b est-il à la fin, et non pas/home / HM?

25
demandé sur Hermann Speiche 2012-05-05 02:12:55
la source

2 ответов

bash est "sympathique" lorsque vous cd /into/a/symlink/, le shell se souvient de l'ancien emplacement (en $OLDPWD) et utilisera directory lorsque vous cd .. selon l'hypothèse que vous voulez retourner dans le répertoire où vous étiez.

si vous voulez utiliser le réel.., alors vous devez aussi 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.
$ cd
$ cd a/b/symlink
$ cd -P ..
$ pwd -P
/home/sarnold
$ 
26
répondu sarnold 2012-05-05 02:22:15
la source

bash conserve la trace du chemin du répertoire courant logique, comme indiqué dans votre invite, et interprète des choses comme cd .. selon que. Cela rend les choses un peu plus consistant si vous n'utilisez que de tels chemins cd (ou pushd), au prix de choses inattendues qui se produisent si vous vous attendez alors à ce que la même chose se produise avec les chemins dans les arguments de commande (ou dans les commandes; emacs et vim ont leurs propres règles configurables pour la manipulation des liens symboliques, mais la plupart des commandes s'appuient sur le noyau de traiter avec elle).

5
répondu geekosaur 2012-05-05 02:20:50
la source

Autres questions sur