Sie haben die -l
Option genutzt:
Folgt symbolischen Links, wenn sie auf Verzeichnisse verweisen, als wären es Verzeichnisse. Symbolische Verknüpfungen, die zu Rekursion führen, werden beim Erkennen vermieden.
Nun, der Grund, warum diese Warnung ausgegeben wird, ist nicht, dass sie tatsächlich wiederkehren würde. Wir können deutlich erkennen, dass der bbb/ccc
Baum einfach erneut aufgelistet wird.
Ich schätze, dass das eigentliche Problem das Halteproblem ist : Der tree
Befehl kann nicht wissen, ob er unendlich oft wiederkehren wird oder nicht, und er muss bereits aufhören, wenn er einen Symlink zu einem Verzeichnis entdeckt, das er bereits besucht hat - selbst wenn er diesem Verzeichnis folgt würde nur einen Teilbaum drucken und nicht erneut aufrufen.
Auch wenn Sie vorzeitig oder nach einer vordefinierten Anzahl von Rekursionen anhalten könnten, ist dies alles, um nicht unendlich viel Speicherplatz zu verbrauchen. Zumindest ist das meine Interpretation.
Der entsprechende Code ist hier übrigens. Wenn die Inode-Nummer des Verzeichnisses, auf das der Symlink verweist, in der Hash-Tabelle gefunden wird (die mit saveino
und gefüllt ist findino
), wird sie einfach übersprungen.