Você realmente está dentro /home/cpm135/public_html/class- essa é a única resposta correta para a pergunta "qual é o meu diretório de trabalho atual".
Quando você se refere a /var/lib/class... não é exatamente onde você está, mas mais sobre o caminho que você usou para chegar lá .
Quando você executa /bin/pwd, ele descobre seu diretório de trabalho atual observando o. e .. diretórios (os listados na parte superior de ls -la), calculando qual diretório em .. combina com. e depois trabalhando para trás até ... e. consulte o mesmo diretório. Uma vez feito tudo isso, ele sabe qual é o seu diretório de trabalho atual.
Quando você executa o pwdshell interno, ele não segue este procedimento (embora possa fazer parte dele, se necessário) - em vez disso, lembra o caminho que você seguiu para chegar até aqui. Portanto, toda vez que você executa um cdcomando, seu shell se lembra disso como parte do caminho para chegar onde está agora e pwdimprime o que foi calculado com base em todos os cdcomandos que você executou - o que pode ou não ser o seu real diretório de trabalho.
As coisas podem ficar realmente estranhas quando você faz um ln -s . fooe continua cdno foo - /bin/pwddirá que você ainda está no mesmo diretório, mas o shell interno pwddirá que você está /foo/foo/foo/foo/foo/foo- mesmo que esse diretório não exista. (Dito isto - você provavelmente pode cd .)
Outra fonte de confusão é se os diretórios forem renomeados. /bin/pwdentão, a mudança será feita imediatamente, mas o built-in pwdnão será feito até que você faça algo que indique que o nome do diretório antigo não importa.