Una directory (come qualsiasi file) non è definita dal suo nome. Pensa al nome come all'indirizzo della directory . Quando sposti la directory, è sempre la stessa directory, proprio come se ti sposti in un'altra casa, sei sempre la stessa persona. Se rimuovi una directory e ne crei una nuova con lo stesso nome, è una nuova directory, proprio come qualcuno che si trasferisce nella casa in cui vivevi non sei tu.
Ogni processo ha una directory di lavoro . Il cd
comando nella shell cambia la directory di lavoro corrente della shell. Il pwd
comando stampa il percorso¹ alla directory di lavoro corrente.
Quando hai rimosso la directory A, ciò che ha fatto è stato rimuovere la voce per A nella sua directory padre. La directory A stessa è rimasta nel filesystem, ma in uno stato distaccato, senza nome. Non è stato ancora cancellato perché era utilizzato da un processo, vale a dire la prima shell. Quando hai cambiato la directory nella prima shell, la directory è stata finalmente cancellata. La stessa cosa accade quando un file viene eliminato mentre un processo è ancora aperto: la voce della directory del file viene rimossa immediatamente e il file stesso viene rimosso quando smette di essere in uso.
Allo stesso modo, osserva cosa succede quando sposti le directory.
mkdir one two
touch one/1 two/2
cd one
ls
In un'altra shell:
mv one tmp
mv two one
mv tmp two
Nella prima shell:
ls
Il file si 1
trova nella directory originariamente chiamata one
e ora viene chiamata two
. Il file si 2
trova nella directory originariamente chiamata two
e ora viene chiamata one
.
¹ Più precisamente, un percorso, che potrebbe non essere unico se sono coinvolti collegamenti simbolici o altre sottigliezze.
cd $PWD
.