Estranheza com links simbólicos e caminhos relativos

1

Alguém poderia me explicar isso? Estou tendo problemas para entender como isso é configurado e por que ele se comporta da maneira como funciona.

Eu queria ver onde zsh é realmente instalado em uma máquina que eu uso. Então, usei ls para descobrir onde o link simbólico aponta.

$ ls -l /bin/zsh
lrwxrwxrwx   1 root     root          14 Dec  1  2011 /bin/zsh -> ../sfw/bin/zsh*

Quando vi isso, pensei: "Ok, o link simbólico usa um caminho relativo. Não é grande coisa".

Mas se eu tentar cd diretamente no que deveria estar onde o caminho relativo aponta, eu obtenho isto:

$ cd /bin/sfw/bin
cd: no such file or directory: /bin/sfw/bin

No entanto, se eu digitar especificamente isso

$ cd ../sfw/bin

quando /bin é o diretório de trabalho, então funciona. E então eu também entendo isso:

$ pwd
/usr/sfw/bin

O que está acontecendo aqui?

    
por Sildoreth 19.05.2015 / 19:45

1 resposta

2

/bin é provavelmente um link simbólico para /usr/bin em seu sistema. Se isso fosse verdade, então:

/bin/../sfw/bin/zsh

seria na verdade o mesmo que

/usr/bin/../sfw/bin/zsh

que reduz para

/usr/sfw/bin/zsh

que é onde zsh realmente vive. Note que o que você tentou, que foi

/bin/sfw/bin

não corresponde a nenhum caminho que você possa ver no sistema. A maneira correta de resolver um caminho relativo ( ../sfw/bin/zsh ) dado o caminho de caminho absoluto que forma a base para esse caminho relativo ( /bin ) é concatená-los juntos como /bin/ + ../sfw/bin/zsh/bin/../sfw/bin/zsh . / p>     

por 19.05.2015 / 19:50