cd e ls se comportam de maneira diferente quando dentro de um softlink para um dir

7

Quando entramos em um diretório pelo seu link, eu observo:

  1. ls .. mostrará o conteúdo do diretório pai do diretório vinculado, while cd .. irá sob o diretório pai da softlink. Por que eles são diferentes?

  2. cd .. seguido por tab não fornece opções para conclusão, nem para o conteúdo do diretório pai do diretório vinculado, nem para o conteúdo do diretório pai do softlink. Por que isso acontece?

  3. Como sabemos, entre todos os comandos de diretório, quais funcionam para o diretório vinculado, ou para o seu link, na situação acima?

por Tim 29.09.2014 / 04:15

1 resposta

8

Porque o bash (e possivelmente outros shells) rastreiam o caminho que você desceu, incluindo links simbólicos, para fazer com que a sua trilha volte a se parecer com a que está abaixo.

O Bash sabe como você chegou ao diretório de trabalho porque cd deve ser um shell embutido. Quando você executa ls .. , o shell não pode substituir o "caminho simbólico" porque grep .. também é válido e traduzir .. seria terrivelmente confuso.

Do jeito que está, o shell atualmente tem duas interpretações de .. , o que poderia ser discutido é tão confuso como se ele nunca tentasse ajudar.

    
por 29.09.2014 / 06:41