Faire suivre les liens symboliques au cd

76

Mon code est monté en tant que sshfs dans mon répertoire personnel, mais la hiérarchie est difficile à mémoriser. J'ai donc créé un lien symbolique dans mon répertoire personnel menant à ce répertoire. Y at-il un moyen pour que lorsque je cd à ce lien symbolique, au lieu de cding au lien symbolique, il sera réellement cd dans ce répertoire?

Si la question n'était pas claire, voici un exemple de ce que je recherche:

foo@foo:~$ ls -l
lrwxrwxrwx  1 foo      foo              5 2012-11-14 08:20 foo -> bar/bar

foo@foo:~$ cd foo
foo@foo:~/bar/bar/$
Rowantran
la source
3
deux questions connexes
jw013

Réponses:

105

Avec n'importe quelle implémentation POSIX de cd, vous pouvez utiliser l' -Poption pour ce faire.

$ help cd
...
    -P      use the physical directory structure without following symbolic links
...

Vous pouvez le voir en action ici:

$ mkdir foo
$ ln -s foo bar
$ cd -P bar
$ pwd
/tmp/tmp.WkupF2Ucuh/foo

Si vous voulez que ce soit le comportement par défaut, vous pouvez créer un alias pour cd, comme suit:

alias cd='cd -P'

... ou utiliser set -o physical. Pour tcsh, la commande équivalente est set symlinks=chase.

Chris Down
la source
Et si vous n'avez pas d'implémentation Posix ...?
Scott Biggs