Restaure a funcionalidade 'cd ..' depois de seguir um link simbólico

12

Se eu criar um link simbólico no terminal com um comando como

ln -s /path/to/some/directory symbolicLink

e depois siga o link com

cd symbolicLink

o terminal parece achar que o cwd é ~/symbolicLink/ , embora na verdade esteja exibindo ~/path/to/some/directory/ (supondo que o link tenha sido feito em ~ , é claro). Isso significa que, se eu digitar cd .. , voltarei para ~ , porque o terminal "pensa" que é o pai da cwd.

O que eu preciso alterar para que cd .. me leve a ~/path/to/some/ , ou seja, o pai real de ~/path/to/some/directory/ ?

    
por Val 12.08.2013 / 07:32

4 respostas

15

Veja link .

Você pode usar 'cd -P' para ir para o diretório pai "real". Veja o primeiro comentário na resposta principal sobre como tornar esse comportamento padrão.

    
por Alexander 12.08.2013 / 07:53
5

Há uma limitação sutil no comportamento cd -P (postado como resposta por causa do tamanho):

$ dir1=$(mktemp --directory)
$ dir2=$(mktemp --directory)
$ ln -s -- "$dir1" /tmp/start
$ ln -s -- "$dir2" "$dir1"
$ cd "/tmp/start/"*
$ cd -P ..

O que deve pwd imprimir agora? Logicamente, poderia ser

  1. $dir1 , se cd -P .. fizer cd .. primeiro e cd -- "$(readlink -f)" depois, ou
  2. /tmp , se cd -P .. fizer cd -- "$(readlink -f)" primeiro e cd .. depois.

Na verdade, ele faz o último, significando que pwd é intuitivamente dois níveis mais altos que o diretório "pai".

    
por l0b0 12.08.2013 / 12:00
2

Uma maneira alternativa é executar:

cd $(/bin/pwd)/..
    
por jlliagre 12.08.2013 / 10:04
2

Sinto sua dor - considero que bash está basicamente quebrado para uso interativo devido a esse comportamento.

tcsh é um shell muito mais fácil de usar para uso interativo. Deixe bash para programação (se você insistir em escrever scripts shell quando houver alternativas muito melhores entre as muitas linguagens de script).

Para alterar shells para qualquer usuário, digite chsh na linha de comando e siga os prompts (novamente, eu recomendo /bin/tcsh e o excelente livro O'Reilly Usando csh e tcsh , disponível para quase nada usado).

    
por dodgethesteamroller 12.08.2013 / 16:40