O principal motivo é provavelmente histórico. Nos tempos antigos, não havia rmdir(2)
e mkdir(2)
chamadas de sistema (estamos discutindo a 7ª edição UNIX ™ aqui), e rmdir(1)
era (necessariamente) um programa de raiz SUID que usava o unlink(2)
chamada do sistema para remover diretórios.
Os manuais da 7ª edição do UNIX estão disponíveis online no link (última verificação em 2017-04-23); Eles também estão disponíveis no link (marcado pela última vez em 2017-04-23). Também parece haver pelo menos uma fonte alternativa on-line - link - para os artigos no Volume 2, com um link para o site FreeBSD para os comandos e chamadas do sistema no Volume 1.
O comando rm
(um programa comum não-SUID) chamou o comando rmdir(1)
para remover diretórios vazios. Não poderia fazê-lo; que requer privilégios de root. Então, o comando rmdir(1)
(veja aqui para seu código-fonte no Unix V7) existia para remover diretórios vazios, e o comando rm
não removeu diretórios vazios em si.
Para usar rm
para remover diretórios, você precisa dar a opção -r
.
Há também um argumento de simetria. Você precisa de um comando mkdir(1)
para criar diretórios; parece razoável ter um comando rmdir(1)
para desfazer o que mkdir(1)
fez. Além disso, eles são (hoje em dia) simples exercitadores das chamadas do sistema rmdir(2)
e mkdir(2)
- sim, de volta no 7th Edition UNIX, mkdir(1)
também era um programa raiz SUID, usando a chamada mknod(2)
para criar um diretório e a chamada link(2)
para criar as entradas .
e ..
no diretório.