Um diretório (como qualquer arquivo) não é definido por seu nome. Pense no nome como o endereço do diretório . Quando você move o diretório, ele ainda é o mesmo diretório, assim como se você se mudar para uma casa diferente, você ainda é a mesma pessoa. Se você remover um diretório e criar um novo com o mesmo nome, será um novo diretório, assim como alguém que se muda para a casa onde você morava, não é você.
Cada processo possui um diretório de trabalho . O cd
comando no shell altera o diretório de trabalho atual do shell. O pwd
comando imprime o caminho para o diretório de trabalho atual.
Quando você removeu o diretório A, o que isso fez foi remover a entrada de A em seu diretório pai. O próprio diretório A permaneceu no sistema de arquivos, mas em um estado desanexado, sem nome. Ainda não foi excluído porque estava em uso por um processo, ou seja, o primeiro shell. Quando você alterou o diretório no primeiro shell, o diretório foi finalmente excluído. O mesmo ocorre quando um arquivo é excluído enquanto um processo ainda o abre: a entrada de diretório do arquivo é removida imediatamente e o próprio arquivo é removido quando deixa de ser usado.
Da mesma forma, observe o que acontece quando você move os diretórios.
mkdir one two
touch one/1 two/2
cd one
ls
Em outra concha:
mv one tmp
mv two one
mv tmp two
No primeiro shell:
ls
O arquivo 1
está no diretório que foi originalmente chamado one
e agora é chamado two
. O arquivo 2
está no diretório que foi originalmente chamado two
e agora é chamado one
.
Precisely Mais precisamente, um caminho, que pode não ser exclusivo se houver links simbólicos ou outras sutilezas.
cd $PWD
.