Você realmente está em /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 ... isso não é realmente sobre onde você está, mas mais sobre qual caminho você usou para chegar lá .
Quando você executa /bin/pwd , ele descobre seu diretório de trabalho atual observando o. e .. diretórios (aqueles listados no topo de ls -la ), trabalhando em qual diretório em .. combina com. e depois trabalhando para trás até .. e. consulte o mesmo diretório. Uma vez feito isso, ele sabe qual é o seu diretório de trabalho atual.
Quando você executa o shell pwd integrado, ele não segue este procedimento (embora ele possa fazer algumas delas, se necessário) - em vez disso, ele lembra o caminho que você levou para chegar até aqui. Portanto, cada vez que você fizer um comando cd , seu shell lembrará disso como parte do caminho para chegar onde você está agora, e pwd imprimirá o que calculou com base em todos os comandos cd que você fez - - que pode ou não ser seu diretório de trabalho atual.
As coisas podem ficar muito estranhas quando você faz um ln -s . foo e mantém cd ing em foo - /bin/pwd dirá que você ainda está no mesmo diretório, mas o shell embutido pwd dirá ' re em /foo/foo/foo/foo/foo/foo - mesmo que tal diretório não exista realmente. (Dito isso - você provavelmente pode cd para ele.)
Outra fonte de confusão é se os diretórios forem renomeados. /bin/pwd irá então pegar a mudança imediatamente, mas o pwd embutido não irá até você fazer algo que diga que o antigo nome do diretório não importa.