bash "sabe" sobre links simbólicos e rastreia esta informação quando você usa um symlink para entrar em um diretório.
Você pode verificar isso fazendo o seguinte no seu exemplo:
$ cd /dir2
$ cd linked
$ pwd
/dir2/linked
$ PWD='' bash -c pwd
/dir1
Você precisa iniciar o bash com uma variável PWD vazia, caso contrário, ele usará esse truque para exibir o caminho "falso".
Observe que ls é um programa separado e, como tal, não tem conhecimento de como você chegou ao diretório atual, portanto ls .. mostrará apenas o conteúdo do diretório real , não relativo ao symlink que você seguiu.
A maioria dos programas não depende da variável de ambiente CWD , pois há muitas maneiras de iniciar programas, através do bash shell é apenas um, então não é confiável esperar que CWD contenha o valor correto (tente definir CWD de algo errado antes de fazer bash -c pwd , você pode ver que ele verifica o valor da sanidade).