Realmente estás en /home/cpm135/public_html/class
, esa es la única respuesta correcta a la pregunta "cuál es mi directorio de trabajo actual".
Cuando se refiere a /var/lib/class
... no se trata realmente de dónde se encuentra, sino más bien de qué camino solía llegar allí .
Cuando corres /bin/pwd
, calcula su directorio de trabajo actual mirando el. y ... directorios (los que figuran en la parte superior de ls -la
), que determinan con qué directorio ... coincide. y luego trabajando hacia atrás hasta ... y. consulte el mismo directorio. Una vez hecho todo eso, sabe cuál es su directorio de trabajo actual.
Cuando ejecuta el pwd
shell incorporado, no sigue este procedimiento (aunque podría hacer algo si es necesario); en cambio, recuerda el camino que tomó para llegar aquí. Entonces cada vez que haces uncd
comando, tu shell recuerda eso como parte del camino para llegar a donde estás ahora, e pwd
imprime lo que ha calculado en función de todos los cd
comandos que has hecho, que pueden o no ser tu directorio de trabajo.
Las cosas pueden ponerse realmente extrañas cuando haces ln -s . foo
y sigues cd
en foo: /bin/pwd
dirá que todavía estás en el mismo directorio, pero el shell incorporado pwd
dirá que estás en él /foo/foo/foo/foo/foo/foo
, a pesar de que tal directorio realmente no existe. (Dicho esto, probablemente puedas cd
hacerlo).
Otra fuente de confusión es si los directorios cambian de nombre. /bin/pwd
luego recogerá el cambio de inmediato, pero el incorporado pwd
no lo hará hasta que haga algo que le diga que el antiguo nombre del directorio no importa.