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, ainda é o mesmo diretório, como se você fosse para uma casa diferente, você ainda é a mesma pessoa. Se você remover um diretório e criar um novo com o mesmo nome, é um novo diretório, assim como alguém que se muda para a casa onde você morava não é você.
Cada processo tem um diretório de trabalho . O comando cd
no shell altera o diretório de trabalho atual do shell. O comando pwd
imprime o caminho to 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 diretório A permaneceu no sistema de arquivos, mas em um estado desanexado, sem nome. Ele não foi excluído ainda 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 acontece quando um arquivo é excluído enquanto um processo ainda o mantém aberto: a entrada de diretório do arquivo é removida imediatamente e o próprio arquivo é removido quando ele deixa de estar em uso.
Da mesma forma, observe o que acontece quando você move diretórios.
mkdir one two
touch one/1 two/2
cd one
ls
Em outro shell:
mv one tmp
mv two one
mv tmp two
No primeiro shell:
ls
O arquivo 1
está no diretório originalmente chamado one
e agora é chamado de two
. O arquivo 2
está no diretório originalmente chamado two
e agora é chamado de one
.
¹ Mais precisamente, o caminho a , que pode não ser único se links simbólicos ou outras sutilezas estiverem envolvidos.