Faça o cd seguir links simbólicos

76

Eu tenho meu código montado como um sshfs no meu diretório pessoal, mas a hierarquia é difícil de lembrar, então criei um link simbólico no meu diretório pessoal que leva a esse diretório. Existe uma maneira de que, quando eu cd para esse link simbólico, em vez de copiar para o link simbólico, ele realmente CD para esse diretório?

Se a pergunta não estava clara, aqui está um exemplo do que estou procurando:

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
fonte
3
duas perguntas relacionadas
jw013 14/11

Respostas:

105

Com qualquer implementação POSIX de cd, você pode usar a -Popção para fazer isso.

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

Você pode vê-lo em ação aqui:

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

Se você deseja que esse seja o comportamento padrão, é possível criar um alias para cd, assim:

alias cd='cd -P'

... ou use set -o physical. Para tcsh, o comando equivalente é set symlinks=chase.

Chris Down
fonte
E se você não tem uma implementação Posix ...?
Scott Biggs