GNU/Linux >> Znalost Linux >  >> Linux

Proč má „/“ položku „...“?

Tohle mě vždycky mátlo. Proč kořenový adresář obsahuje odkaz na nadřazený adresář?

[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

Rozumím tomu, jak jsou v souborovém systému spravovány adresáře – každý adresář má na sebe n+2 ukazatelů (n =počet podadresářů v adresáři). Jeden pro každý bezprostřední podadresář, jeden pro jeho nadřazený adresář a jeden pro sebe.

Ale co je / 'rodič?

Přijatá odpověď:

/.. ukazuje na / :

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

Oba mají stejné číslo inodu, které je v tomto systému náhodou 2. (Na přesné hodnotě nezáleží.)

Dělá se to kvůli konzistenci. Tímto způsobem v jádře nemusí být kód ke kontrole, kde se aktuálně nachází, když zpracovává .. v cestě. Můžete říct cd .. navždy a nikdy nepůjde hlouběji než kořen.


Linux
  1. Proč Sudo ignoruje aliasy?

  2. Má Curl časový limit?

  3. Proč nemohu použít CD ve skriptu Bash?

  1. Proč nemají Ifs žádný účinek v `když Ifs=číst...`?

  2. Vsftpd neuvádí obsah adresáře?

  3. Má Python argument argc?

  1. Unix, rozdíl mezi cestou začínající „/“ a „//“?

  2. Proč ENOENT znamená Žádný takový soubor nebo adresář?

  3. proč nefunguje sftp rmdir?