Niech cd podąża za symbolicznymi linkami

76

Mam kod zamontowany jako sshfs w moim katalogu domowym, ale hierarchia jest trudna do zapamiętania, więc utworzyłem dowiązanie symboliczne w moim katalogu domowym prowadzącym do tego katalogu. Czy jest jakiś sposób, aby kiedy cd do tego dowiązania symbolicznego, zamiast cdingu do dowiązania symbolicznego, faktycznie cd do tego katalogu?

Jeśli pytanie było niejasne, oto przykład tego, czego szukam:

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
źródło
3
dwa powiązane pytania
jw013,

Odpowiedzi:

105

W przypadku dowolnej implementacji POSIX cdmożesz użyć tej -Popcji.

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

Możesz zobaczyć to w akcji tutaj:

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

Jeśli chcesz, aby było to zachowanie domyślne, możesz utworzyć alias dla cd:

alias cd='cd -P'

... lub użyj set -o physical. W przypadku tcsh równoważne polecenie to set symlinks=chase.

Chris Down
źródło
A jeśli nie masz implementacji Posix ...?
Scott Biggs,