Por padrão, se você passar um diretório (ou um link simbólico para um diretório) como o segundo argumento para o comando ln , ele criará um link dentro desse diretório com o mesmo nome do primeiro argumento. Assim, com o conjunto de comandos que você emitiu, você deve encontrar um link simbólico denominado dir2 inside dir1 .
Você pode alterar esse comportamento usando a opção -T :
-T, --no-target-directory
treat LINK_NAME as a normal file
Se você passar essa opção em sua segunda invocação de ln , deverá substituir o link simbólico lnk em vez de criar um novo symlink dentro do primeiro diretório.