Digamos que eu faça o seguinte:
cd /some/path
ln -s /target/path symbolic_name
Se sim, faça:
cd /some/path
cd symbolic_name
pwd
Eu recebo:
/some/path/symblic_name
e não:
/target/path
Existe uma maneira de o shell "resolver completamente" um link simbólico (ou seja, atualizar o CWD etc.), como se eu tivesse feito diretamente:
cd /target/path
?
Preciso executar alguns programas que parecem "cientes" ou "sensíveis" sobre como chego ao meu caminho de destino e gostaria que eles pensassem que cheguei ao caminho de destino como se tivesse feito cd /target/path
diretamente.
pwd -P
oualias pwd='pwd -P'
tambémcd -P
ir para o caminho físico em vez do link simbólico.Respostas:
Seu shell possui um built-in
pwd
, que tenta ser "inteligente". Depois que você fez umcd
link simbólico, o internopwd
falsifica a saída como se você fosse para um diretório real.Passe a
-P
opção parapwd
, ou seja, executepwd -P
. A-P
opção (para "físico") indicapwd
para não fazer nenhum rastreamento de link simbólico e exibir o caminho "real" para o diretório.Como alternativa, também deve haver um binário real
pwd
, que não faz (e nem é capaz de fazer) esse tipo de mágica. Basta usar essa explicidade binária:fonte
Tente
cd -P <symlink_dirname>
.Você também pode usar
set -o physical
para fazer esse comportamento persistir durante a vida útil do shell em execução.Confira https://stackoverflow.com/questions/10456784/behavior-of-cd-bash-on-symbolic-links para mais algumas boas informações.
fonte