Sie sind wirklich dabei /home/cpm135/public_html/class
- das ist die einzig richtige Antwort auf die Frage "Was ist mein aktuelles Arbeitsverzeichnis?".
Wenn Sie sich auf /var/lib/class
... beziehen , geht es nicht wirklich darum, wo Sie sich befinden, sondern vielmehr darum, auf welchem Weg Sie dorthin gekommen sind .
Wenn Sie ausführen /bin/pwd
, wird Ihr aktuelles Arbeitsverzeichnis anhand der. und .. Verzeichnisse (die oben aufgelisteten ls -la
), um herauszufinden, welches Verzeichnis in .. mit übereinstimmt. und dann rückwärts arbeiten bis .. und. Verweisen Sie auf dasselbe Verzeichnis. Sobald das erledigt ist, weiß es, was Ihr aktuelles Arbeitsverzeichnis ist.
Wenn Sie die integrierte pwd
Shell ausführen, befolgt sie diese Prozedur nicht (obwohl sie möglicherweise bei Bedarf einen Teil davon ausführt) - stattdessen merkt sie sich den Pfad, den Sie genommen haben, um hierher zu gelangen. Jedes Mal, wenn Sie einen cd
Befehl ausführen, merkt sich Ihre Shell diesen als Teil des Pfads, um zu sehen, wo Sie sich gerade befinden, und pwd
druckt aus, was er basierend auf allen von cd
Ihnen ausgeführten Befehlen berechnet hat - was möglicherweise Ihr tatsächlicher ist oder nicht Arbeitsverzeichnis.
Die Dinge können sich wirklich seltsam, wenn Sie ein tun ln -s . foo
und halten cd
ing in foo - /bin/pwd
werden Sie noch im selben Verzeichnis, aber die Schale builtin sagen sind pwd
werden sagen , du bist in /foo/foo/foo/foo/foo/foo
- auch wenn kein solches Verzeichnis auch wirklich existiert. (Das heißt - Sie wahrscheinlich kann cd
hinein.)
Ein weiterer Grund für Verwirrung besteht darin, dass Verzeichnisse umbenannt werden. /bin/pwd
Die Änderung wird dann sofort übernommen, die integrierte Funktion pwd
jedoch erst, wenn Sie einen Befehl ausführen, der besagt, dass der alte Verzeichnisname keine Rolle spielt.