Menghapus direktori saat ini tidak memengaruhi integritas sistem file atau organisasi logisnya. Mencegah .
penghapusan dilakukan untuk mengikuti standar POSIX yang menyatakan di rmdir(2)
halaman manual:
Jika argumen path merujuk ke path yang komponen terakhirnya adalah dot atau dot-dot, rmdir () akan gagal.
Satu alasan dapat ditemukan di rm
halaman manual:
Utilitas rm dilarang untuk menghapus nama dot dan dot-dot untuk menghindari konsekuensi melakukan sesuatu seperti:
rm -r. *
Di sisi lain, menghapus direktori saat ini secara eksplisit (yaitu dengan menyatakan path lengkap atau relatifnya) adalah operasi yang diperbolehkan di bawah Unix, setidaknya sejak SVR3 karena itu dilarang dengan Unix versi 7 hingga SVR2. Ini sangat mirip dengan apa yang terjadi ketika Anda menghapus file yang sedang aktif dibaca atau ditulis. Proses mengakses file hapus melanjutkan operasi baca dan tulis mereka seperti jika tidak ada yang terjadi. Setelah Anda menghapus direktori proses saat ini, direktori ini tidak lagi dapat diakses melalui jalurnya tetapi inode-nya tetap ada pada sistem file hingga proses tersebut mati atau mengubah direktori sendiri.
Perhatikan bahwa proses tidak akan dapat menggunakan jalur relatif ke direktori saat ini untuk mengubah cwd-nya (misalnya cd ..
) karena tidak ada lagi ..
entri dalam direktori saat ini.
Ketika jenis seseorang rmdir .
, mereka cenderung mengharapkan masuknya direktori saat ini untuk dihapus tetapi ketika sebuah direktori dihapus (menggunakan jalurnya), tiga entri direktori yang benar-benar dihapus, .
, ..
, dan direktori itu sendiri.
Menghapus saja .
dan bukan entri direktori ini akan membuat direktori yang tidak patuh tetapi sebagaimana telah dinyatakan, itu dilarang oleh standar.
Seperti @Emmanuel tunjukkan dengan benar, ada alasan kedua mengapa penghapusan .
tidak diizinkan. Setidaknya ada satu OS yang kompatibel dengan POSIX (Mac OS X dengan HFS +) yang, dengan batasan kuat, mendukung pembuatan hardlink ke direktori yang ada. Dalam kasus seperti itu, tidak ada cara yang jelas dari dalam direktori untuk mengetahui hardlink mana yang diharapkan untuk dihapus.