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

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.


A jeśli nie masz implementacji Posix ...?
Scott Biggs,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.