Na superfície, o que você sugeriu que você tentou funciona para mim.
Exemplo
$ mkdir -p test/src test/firefox
$ tree --noreport -fp
.
'-- [drwxrwxr-x] ./test
|-- [drwxrwxr-x] ./test/firefox
'-- [drwxrwxr-x] ./test/src
Faça o link simbólico:
$ ln -s test/src test/firefox
$ tree --noreport -fp
.
'-- [drwxrwxr-x] ./test
|-- [drwxrwxr-x] ./test/firefox
| '-- [lrwxrwxrwx] ./test/firefox/src -> test/src
'-- [drwxrwxr-x] ./test/src
Executá-lo pela segunda vez normalmente produziria isso:
$ ln -s test/src test/firefox
ln: failed to create symbolic link ‘test/firefox/src’: File exists
Então você provavelmente tem outra coisa acontecendo aqui. Eu suspeitaria que você tem uma referência circular onde um link está apontando de volta para si mesmo.
Você pode usar find
para descobrir isso um pouco:
$ cd /suspected/directory
$ find -L ./ -mindepth 15