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 pwd
shell 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 cd
comando, seu shell se lembra disso como parte do caminho para chegar onde está agora e pwd
imprime o que foi calculado com base em todos os cd
comandos 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 . foo
e continua cd
no foo - /bin/pwd
dirá que você ainda está no mesmo diretório, mas o shell interno pwd
dirá 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/pwd
então, a mudança será feita imediatamente, mas o built-in pwd
não será feito até que você faça algo que indique que o nome do diretório antigo não importa.