Você usou a opção -l :
Follows symbolic links if they point to directories, as if they were directories. Symbolic links that will result in recursion are avoided when detected.
Agora, a razão pela qual ele imprime esse aviso não é que ele realmente recurse. Podemos ver claramente que seria simplesmente listar novamente a árvore bbb/ccc .
Meu palpite é que o verdadeiro problema é o problema de parada : o tree O comando não pode saber se irá ou não reciclar infinitamente, portanto, ele deve parar quando detectar um link simbólico para um diretório que já tenha visitado - mesmo que seguir esse diretório seria apenas imprimir uma subárvore e não reciclar.
Mesmo se você puder interromper cedo ou depois de um número predefinido de recursões, tudo isso será feito para não consumir quantidades infinitas de memória. Pelo menos essa é a minha interpretação.
O código respectivo é aqui , a propósito. Se o número de inode do diretório apontado pelo symlink for encontrado na tabela de hash (aquela que é preenchida com saveino e findino ), ele simplesmente irá ignorá-lo.