Qual é o motivo dessa sequência "rm" específica na piada xkcd?

14

Aqui está parte dessa história em quadrinhos do xkcd em que a idéia é que o autor não pode escrever um programa de classificação, então ele adiciona código para excluir todos os arquivos

system("rm -rf ./");
system("rm -rf ~/*");
system("rm -rf /");

AFAIK, a maneira canônica de excluir tudo é fazer rm /com que tudo a partir da raiz seja excluído. Aqui este é o último comando e os dois comandos anteriores que tentam rmo diretório atual e o conteúdo do diretório inicial.

Por que não apenas rm /?

dente afiado
fonte

Respostas:

19

Se você começar do topo, é possível que acabe com algo que rm(ou alguma outra parte crítica do sistema) precise continuar e a maldade ficará incompleta.

Esses comandos garantirão que pelo menos o cwd e o diretório inicial do usuário tenham desaparecido antes de se tornarem nucleares.

Flup
fonte
5
O JFTR, como rm, é carregado na memória, deve funcionar e continuar trabalhando, mesmo que as variáveis ​​necessárias sejam removidas. Depois de executar rm -rf /a partir de uma sessão interativa seu shell deve ser ainda está trabalhando
Ulrich Dangel
8
rmS recentes falharão no último comando com rm: it is dangerous to operate recursively on ‘/’; diferente disso rmnão requer acesso a nenhum recurso após a inicialização. Um motivo para usar vários comandos pode ser que o usuário possa ter permissões de acesso diferentes para esses diretórios.
Stéphane Gimenez
@UlrichDangel, eu descobri da maneira mais difícil no Solaris há muito tempo atrás ...
vonbrand
1
Será. Você realmente precisa usar rm --no-preserve-root /para que isso realmente trabalho
Max
1
"Esses comandos garantirão que pelo menos o cwd e o diretório pessoal do usuário tenham desaparecido antes de se tornarem nucleares". E se executarmos esse script quando estivermos em "/ bin /" :)? Os dois últimos comandos não serão executados.
XzKto
8

Apenas para mostrar níveis crescentes de destrutividade: exclua o diretório atual e $HOME, finalmente, destrua tudo.

vonbrand
fonte