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.