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 pwdShell 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 cdBefehl ausführen, merkt sich Ihre Shell diesen als Teil des Pfads, um zu sehen, wo Sie sich gerade befinden, und pwddruckt aus, was er basierend auf allen von cdIhnen 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 . foound halten cding in foo - /bin/pwdwerden Sie noch im selben Verzeichnis, aber die Schale builtin sagen sind pwdwerden 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/pwdDie Änderung wird dann sofort übernommen, die integrierte Funktion pwdjedoch erst, wenn Sie einen Befehl ausführen, der besagt, dass der alte Verzeichnisname keine Rolle spielt.