Symlinks sobre SSH: Por que não consigo acessar arquivos / diretórios no diretório pai se a passagem para o diretório atual foi através de um symlink?

0

NOTA: Esse comportamento é observado por meio de acesso remoto usando SSH.

Percebi que, se eu mudei para um diretório usando um link simbólico, não posso usar a entrada .. na listagem de diretórios para voltar ao pai e depois aos diretórios subseqüentes. Por exemplo:

/DirA/SymLinkToDirB
/DirA/SomeOtherFile.txt
/DirA/DirB
/DriA/DirC

/DirA/DirB/someFile.txt

Se eu estivesse atualmente em DirA e emitisse o seguinte comando:      cd SymLinkToDirB , em seguida, um pwd subseqüente resolveria /DirA/DirB , conforme o esperado. No entanto, o seguinte não funcionaria se eu estivesse atualmente em DirB via symLink.

vim ../SomeOtherFile.txt ou mesmo cd ../DirC

Além disso, pressionar tab ao usar cd normalmente listaria os diretórios que um usuário pode percorrer. No entanto, novamente, esse comportamento esperado e observado em uma máquina local também não funciona no SSH.

No entanto, o seguinte funciona se já estivermos em DirB tendo chegado lá através do symlink: cd ../SymLinkToDirB/ , que é uma ação inútil. Parece que o link simbólico reside dentro de um diretório (seu pai) por si próprio.

Sem dúvida, isso tem a ver com o modo como os links simbólicos são tratados no SSH. Qual é o mecanismo pelo qual os links simbólicos são manipulados via SSH que oferece esse comportamento?

    
por sherrellbc 24.06.2015 / 16:23

1 resposta

0

O comando cd está tentando ser inteligente, e lembre-se especificamente de como você chegou ao diretório em que está e supõe que deseja seguir o mesmo caminho novamente.

No entanto, quando você estiver no diretório, outros comandos (como vim ) verão o diretório .. existente e o seguirão pelo sistema de arquivos real.

O que farei algumas vezes é cd symlinktoDirB/../DirB/.. . Usar o conjunto extra de .. s forçará cd a ver o caminho real do sistema de arquivos e segui-lo.

    
por 24.06.2015 / 17:50