Hacer que el cd siga enlaces simbólicos

76

Tengo mi código montado como sshfs en mi directorio de inicio, pero la jerarquía es difícil de recordar, así que creé un enlace simbólico en mi directorio de inicio que conduce a ese directorio. ¿Hay alguna manera de que cuando haga un CD a ese enlace simbólico, en lugar de cd al enlace simbólico, en realidad cd a ese directorio?

Si la pregunta no estaba clara, aquí hay un ejemplo de lo que estoy buscando:

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
fuente

Respuestas:

105

Con cualquier implementación POSIX de cd, puede usar la -Popción para hacer esto.

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

Puedes verlo en acción aqui:

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

Si quieres que este es el comportamiento por defecto, puede crear un alias para cd, de este modo:

alias cd='cd -P'

... o uso set -o physical. Para tcsh, el comando equivalente es set symlinks=chase.

Chris Down
fuente
¿Y si no tienes una implementación de Posix ...?
Scott Biggs