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 pwdshell 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 pwdimprime lo que ha calculado en función de todos los cdcomandos que has hecho, que pueden o no ser tu directorio de trabajo.
Las cosas pueden ponerse realmente extrañas cuando haces ln -s . fooy sigues cden foo: /bin/pwddirá que todavía estás en el mismo directorio, pero el shell incorporado pwddirá 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/pwdluego recogerá el cambio de inmediato, pero el incorporado pwdno lo hará hasta que haga algo que le diga que el antiguo nombre del directorio no importa.