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.