Ligando “..” em outro lugar que não seja o diretório pai e outros arquivos estranhos beharviors

1

A entrada ".." pode ser vinculada a algum lugar diferente do diretório pai? É possível causar "tar" para criar esse comportamento estranho?

Cenário: Eu tenho um compilador pré-compilado para um sistema integrado, distribuído como arquivos tar.gz, que funciona perfeitamente no Ubuntu 10.04. Ao testar uma atualização para o Ubuntu 12.04 em uma VM do VirtualBox, ela não conseguiu descobrir alguns arquivos de cabeçalho. Explorando os arquivos para a causa do problema, notei que ele se perdeu depois de "/a/somundo/convoluído/../../path/../full/of/up/../references/". Explorando um pouco mais, encontrei um comportamento estranho:

  • "ls /that/strange/../../path" mostra os arquivos como esperado.

  • digitando "ls /that/strange/../../path" no bash para uma lista de arquivos dentro de "/that/strange/../../path" (isto é, acionando o nome do arquivo conclusão sem executar "ls") mostra-me uma lista DIFERENTE de arquivos.

  • quando eu corrijo o caminho interpretando o ".." manualmente, as duas saídas são as mesmas.

Suponho que "ls" e o globbing de nomes de arquivo diferem na maneira como eles localizam os arquivos (opendir / readdir, glob, etc.) e uma dessas etapas de operações em um erro do sistema de arquivos. A execução do fsck na VM não resultou em nada incomum. O mesmo resultado para instalar o compilador novamente em uma nova VM. "tar" não retornou nenhum erro. Alguém tem esse tipo de problema?

    
por letsbazinga 05.08.2012 / 23:44

1 resposta

2

Um dos "diretórios" do seu caminho é, na verdade, um link simbólico para algum outro diretório? Em caso afirmativo, .. irá para o diretório pai do diretório de destino, não para o diretório que contém o link simbólico.

O Bash tenta "consertar" isso reinterpretando .. para indicar o diretório que contém o symlink. Tenho certeza de que há uma maneira de desviar esse comportamento irritante, embora não seja útil, já que não consigo me lembrar da última vez que tive que lidar com isso pessoalmente.

    
por 06.08.2012 / 01:50