La rimozione della directory corrente non influisce sull'integrità del file system o sulla sua organizzazione logica. La prevenzione della .
rimozione viene eseguita per seguire lo standard POSIX indicato nella rmdir(2)
pagina del manuale:
Se l'argomento path si riferisce a un percorso il cui componente finale è punto o punto-punto, rmdir () fallirà.
Una motivazione si trova nella rm
pagina del manuale:
L'utilità rm è vietata per rimuovere i nomi punto e punto-punto al fine di evitare le conseguenze di fare inavvertitamente qualcosa del tipo:
rm -r. *
D'altra parte, la rimozione esplicita della directory corrente (ovvero indicando il suo percorso completo o relativo) è un'operazione consentita in Unix, almeno da SVR3 poiché era vietata con Unix versione 7 fino a SVR2. Questo è molto simile a ciò che accade quando si rimuove un file che viene attivamente letto o scritto. I processi che accedono al file di eliminazione continuano le loro operazioni di lettura e scrittura come se non fosse successo nulla. Dopo aver rimosso una directory corrente del processo, questa directory non è più accessibile tramite il suo percorso ma il suo inode rimane presente sul file system fino a quando il processo non termina o cambia la propria directory.
Nota che il processo non sarà in grado di usare un percorso relativo alla sua directory corrente per cambiare il suo cwd (es. cd ..
) Perché non c'è più una ..
voce nella sua directory corrente.
Quando il tipo di qualcuno rmdir .
, che probabilmente si aspettano la voce di directory corrente da rimuovere, ma quando una directory viene rimossa (usando il suo percorso), tre voci di directory sono in realtà rimossi, .
, ..
, e la directory stessa.
Rimuovere solo .
e non la voce di directory di questa directory creerebbe una directory non conforme ma, come già detto, è vietato dallo standard.
Come giustamente sottolineato da @Emmanuel, c'è un secondo motivo per cui la rimozione .
non è consentita. Esiste almeno un sistema operativo compatibile POSIX (Mac OS X con HFS +) che, con forti restrizioni, supporta la creazione di collegamenti diretti a directory esistenti. In tal caso, non esiste un modo chiaro dall'interno della directory per sapere quale hardlink è quello che dovrebbe essere rimosso.