Warum cd ..
wird im Stammordner keine Warnung ausgegeben oder es tritt ein Fehler auf?
Ich würde erwarten:
/$ cd ..
-bash: cd: ..: No such file or directory
Stattdessen bleibe ich bei /
. Natürlich gibt es das da ..
in /
und ist einfach /
nur so .
. Ich frage mich nur, warum das so ist.
directory
cd-command
Bach
quelle
quelle
Antworten:
Laut der Open Group (verantwortlich für den POSIX-Standard):
(Quelle)
quelle
Sie haben nicht einen Fehler, denn auch das
/
Verzeichnis tatsächlich hat einen gültigen Verzeichniseintrag für..
, aber im Gegensatz zu anderen Verzeichnissen verweist er auf das Verzeichnis selbst und verhält sich somit identisch mit.
:Wie die erste Spalte zeigt Ihnen,
.
,..
, und/
alle dieselbe Inode-Nummer und sind daher dieselben Dateisystemeinträge.Also auch wenn du
cd ..
in/
dir bleibst/
.quelle
..
Verzeichniseintrag vorhanden ist./
für wie jeder andere Ordner, darunter ein gültiger Eintrag..
. Andernfalls müssten Sie/
anders als alle anderen Ordner im System behandeln.Es ist vorhanden, da zum Entfernen Code für die Behandlung von Sonderfällen im Kernel und in den C-Bibliotheken erstellt werden muss. Im Moment können Sie davon ausgehen, dass es immer ein '.' und ".." in jedem Verzeichnis, in das Sie gehen.
Der einzige derzeit erforderliche Sonderfallcode ist der Dateisystem-Mount-Code, bei dem der Code den Inode-Wert von '..' überschreibt, um auf das Verzeichnis zu verweisen, das den Mount-Punkt enthält, da Root-Verzeichnisse nicht immer Root-Verzeichnisse sind.
quelle
mount
Befehl und die zugehörige Spezialdatei übergeben/etc/fstab
.Eine andere Möglichkeit, um zu überprüfen, was
.
und..
in was/
wirklich ist:Wie Sie sehen können
.
und..
darauf hingewiesen wird/
.quelle
Ein weiterer Grund, warum '..' in / ist, ist, dass es einen weiteren Sonderfall geben würde, wenn es nicht vorhanden wäre: Das Stammverzeichnis hätte eine feste Verknüpfung weniger als alle anderen Verzeichnisse (alle Verzeichnisknoten haben n + 2 Verknüpfungen, wobei n ist die Anzahl der direkten Unterverzeichnisse innerhalb). Dies würde verschiedene Programme zum Absturz bringen, die sich auf die Optimierung von Verzeichnis-Scans stützen.
quelle
Es ist schön, dass es da ist, weil ich sonst nicht in der Lage wäre, Spam
../../../../
von einem Ordner an den Stamm zu senden. Wenn es nicht zulässt,..
dass sich der Ordner im Stammverzeichnis befindet, stecke ich fest, wenn ich die Anzahl der Ordner im Arbeitsverzeichnis zähle.quelle
cd /
?../
ist die Verwendung besser. Ich führe auch viele Dateioperationen in PHP durch, was/
aus verschiedenen Gründen nicht möglich ist.../
s eingeben und eine Datei bearbeiten (oder entfernen), die Sie nicht ohne Fehler beabsichtigt haben.../
Mehr als nötig zu wiederholen und zu wollen, dass es wie beabsichtigt funktioniert, scheint mir ein (ruhender) logischer Fehler zu sein, auch wenn das Dateisystem es anscheinend zulässt.