Заставьте CD следовать символическим ссылкам

76

Мой код смонтирован как sshfs в моем домашнем каталоге, но иерархию трудно запомнить, поэтому я создал символическую ссылку в моем домашнем каталоге, ведущую к этому каталогу. Есть ли способ, чтобы при переходе на эту символьную ссылку вместо ссылки на символьную ссылку он фактически перешел на этот каталог?

Если вопрос был неясен, вот пример того, что я ищу:

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
источник

Ответы:

105

В любой реализации POSIX cdвы можете использовать эту -Pопцию.

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

Вы можете увидеть это в действии здесь:

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

Если вы хотите, чтобы это было поведение по умолчанию, вы можете создать псевдоним для cd, например, так:

alias cd='cd -P'

... или использовать set -o physical. Для tcsh эквивалентная команда есть set symlinks=chase.

Крис Даун
источник
А если у вас нет реализации Posix ...?
Скотт Биггс