GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum hat „/“ einen „..“-Eintrag?

Das hat mich immer verwundert. Warum enthält das Stammverzeichnis einen Verweis auf ein übergeordnetes Verzeichnis?

[email protected]:/$ ls -a
.     build  home            lib32       mnt   .rpmdb   sys  vmlinuz
..    cdrom  initrd.img      lib64       opt   sbin     tmp  vmlinuz.old
bin   dev    initrd.img.old  lost+found  proc  selinux  usr
boot  etc    lib             media       root  srv      var

Ich verstehe, wie Verzeichnisse im Dateisystem verwaltet werden – jedes Verzeichnis hat n+2 Zeiger auf sich selbst (n =Anzahl der Unterverzeichnisse innerhalb des Verzeichnisses). Eines für jedes unmittelbare Unterverzeichnis, eines für sein übergeordnetes Verzeichnis und eines für sich selbst.

Aber was ist / Eltern?

Akzeptierte Antwort:

/.. zeigt auf / :

$ ls -id /
2 /
$ ls -id /..
2 /..

Beide haben dieselbe Inode-Nummer, die auf diesem System zufällig 2 ist. (Der genaue Wert spielt keine Rolle.)

Es dient der Konsistenz. Auf diese Weise muss kein Code im Kernel vorhanden sein, um zu prüfen, wo er sich gerade befindet, wenn er einen .. verarbeitet in einem Weg. Sie können cd .. sagen für immer und niemals tiefer als die Wurzel.


Linux
  1. Unix, Unterschied zwischen Pfad beginnend mit „/“ und „//“?

  2. Warum hat ein neues Verzeichnis eine Anzahl fester Links von 2, bevor etwas hinzugefügt wird?

  3. Warum hat Ifs in `while Ifs=Read..` keine Auswirkung?

  4. Vsftpd listet den Inhalt eines Verzeichnisses nicht auf?

  5. Warum funktioniert `exit &` nicht?

Hat Python eine Synchronisierung?

Warum bedeutet ENOENT No such file or directory?

warum funktioniert sftp rmdir nicht?

Was ist eine Matrox-GPU und warum hat der UNIX-Server meiner Universität eine?

Warum zeigt mein System nur 3,2 GiB RAM an, wenn ich definitiv 4,0 GiB habe

Was gibt pwd aus?