Eu não acho que você possa fazer isso. Shells hoje em dia controlam como eles chegaram onde estão, eles rastreiam o diretório de trabalho atual pelo nome, ao invés de confiar apenas no sistema de arquivos e SO para mantê-lo. Isso significa que o cd
integrado pode "fazer backup" do link simbólico, em vez de apenas seguir ".." cadeias diretamente.
Mas quando você executa ls ../foo
, ls
não sabe que o shell chegou a um diretório seguindo os links simbólicos. ls
fará um stat()
em "../foo". A parte ".." vem do diretório atual, que tem apenas uma única entrada ".." para seu pai. Toda a coisa do link simbólico não altera a maneira como os diretórios têm um único "." e uma única entrada "..". Links simbólicos permitem que o kernel insira uma camada extra de indireção em caminhos de arquivo. Quando você passa "../whatever" para open()
ou stat()
, o kernel apenas usa o diretório de trabalho atual do processo, fazendo a chamada para descobrir qual diretório único é nomeado por "..".