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 "..".