Links simbólicos com ls, mv: forçando as funções a utilizar endereços “lógicos” (lembrando o caminho original)

6

Parece que, para muitas funções básicas que operam em links simbólicos, o caminho físico é usado por padrão. No entanto, o cd funciona bem. Ao mover para um link simbólico, o cd lembra de onde eu vim, portanto, ele está utilizando o endereço lógico do link simbólico (veja o post relacionado para um exemplo: links simbólicos e cd ).

Funções como ls só funcionam parcialmente dessa maneira. Se eu listar o conteúdo do diretório pressionando a aba ($ ls ../ {tab}), ele listará o conteúdo do diretório onde o link simbólico está localizado, mas se executar o comando ($ ls ../ {enter}) o diretório listagem de conteúdo é do caminho físico. Existe uma maneira de obter comandos como ls, mv, rm, etc para operar como cd e lembrar o caminho lógico para o link simbólico?

Obrigado por qualquer conselho.

    
por mrtrujiyo 01.10.2012 / 20:54

1 resposta

8

É o shell que está fornecendo a ilusão de que um link simbólico apontando para um diretório é um diretório real enraizado no local do symlink. cd é por necessidade um shell embutido, e tab-completion também é uma função executada pelo shell. Como cd é executado pelo shell, ele sabe sobre o symlink e pode manter a ilusão. A maioria dos comandos Unix não são implementados pelo shell e, portanto, não há como saber que você percorreu um symlink para alcançar o diretório atual. Como esses comandos ( ls , mv , rm , etc.) não podem saber sobre o symlink, eles não podem manter a ilusão.

    
por 01.10.2012 / 21:12