Un répertoire (comme tout fichier) n'est pas défini par son nom. Considérez le nom comme l' adresse du répertoire . Lorsque vous déplacez le répertoire, c'est toujours le même répertoire, tout comme si vous déménagez dans une autre maison, vous êtes toujours la même personne. Si vous supprimez un répertoire et en créez un nouveau du même nom, c'est un nouveau répertoire, tout comme quelqu'un qui s'installe dans la maison où vous habitiez n'est pas vous.
Chaque processus a un répertoire de travail . La cd
commande dans le shell modifie le répertoire de travail actuel du shell. La pwd
commande imprime le chemin¹ vers le répertoire de travail actuel.
Lorsque vous avez supprimé le répertoire A, cela a entraîné la suppression de l'entrée pour A dans son répertoire parent. Le répertoire A lui-même est resté dans le système de fichiers, mais dans un état détaché, sans nom. Il n'a pas encore été supprimé car il était utilisé par un processus, à savoir le premier shell. Lorsque vous avez modifié le répertoire dans le premier shell, le répertoire a finalement été supprimé. La même chose se produit lorsqu'un fichier est supprimé alors qu'un processus est toujours ouvert: l'entrée de répertoire du fichier est supprimée immédiatement et le fichier lui-même est supprimé lorsqu'il cesse d'être utilisé.
De même, observez ce qui se passe lorsque vous déplacez des répertoires.
mkdir one two
touch one/1 two/2
cd one
ls
Dans un autre shell:
mv one tmp
mv two one
mv tmp two
Dans le premier shell:
ls
Le fichier se 1
trouve dans le répertoire qui était à l'origine appelé one
et s'appelle maintenant two
. Le fichier se 2
trouve dans le répertoire qui était à l'origine appelé two
et s'appelle maintenant one
.
¹ Plus précisément, un chemin, qui peut ne pas être unique si des liens symboliques ou d'autres subtilités sont impliqués.
cd $PWD
.