Eu tenho usado o Linux de vez em quando nos últimos 15 anos e hoje me deparei com algo no bash que me surpreendeu.
Configure a seguinte estrutura de diretórios:
$ cd /tmp
$ mkdir /tmp/symlinktest
$ mkdir /tmp/symlinktest/dir
$ mkdir /tmp/symlinktarget
Agora crie dois links sym em symlinktest apontando para symlinktarget:
$ cd /tmp/symlinktest
$ ln -s ../symlinktarget Asym
$ ln -s ../symlinktarget Bsym
Agora, no bash, a conclusão da tabulação a seguir faz coisas estranhas. Digite o seguinte:
$ cd dir
$ cd ../A[TAB]
Pressionar a tecla tab acima conclui a linha para:
$ cd ../Asym/
como eu esperava. Agora pressione enter para mudar para Asym e digite:
$ cd ../B[TAB]
Desta vez, pressionar a tecla tab completa o link para:
$ cd ../Bsym[space]
Observe que agora existe um espaço após o Bsym e não há barra final.
A minha pergunta é: por que ao mudar do diretório físico "dir" para Asym ele reconhece que o Asym é um link para um diretório, mas ao mudar de um link sym para outro, ele não reconhece que é um link para um diretório?
Além disso, se eu tentar criar um novo arquivo dentro do Asym, recebo uma mensagem de erro:
$ cd /tmp/symlinktest/Asym
$ cat hello > ../Bsym/file.txt
-bash: ../Bsym/file.txt: No such file or directory
Sempre achei que os links simbólicos eram mais transparentes, exceto para programas que precisavam manipulá-los. Isso é um comportamento normal?
Muito obrigado,
Andy