Fai in modo che il cd segua i collegamenti simbolici


76

Ho il mio codice montato come sshfs nella mia home directory, ma la gerarchia è difficile da ricordare, quindi ho creato un link simbolico nella mia home directory che porta a quella directory. C'è un modo in modo che quando eseguo il cd su quel link simbolico, invece di cding sul link simbolico, in realtà cd su quella directory?

Se la domanda non era chiara, ecco un esempio di ciò che sto cercando:

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/$

Risposte:


105

Con qualsiasi implementazione POSIX di cd, è possibile utilizzare l' -Popzione per farlo.

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

Puoi vederlo in azione qui:

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

Se si desidera che questo sia il comportamento predefinito, è possibile creare un alias per cd, in questo modo:

alias cd='cd -P'

... o usare set -o physical. Per tcsh, il comando equivalente è set symlinks=chase.


E se non hai un'implementazione di Posix ...?
Scott Biggs,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.