Arquivos ocultos no UNIX nasceram como bug que virou feature

Hoje aprendi que quando a segunda versão do sistema de arquivos do UNIX estava sendo refeita, introduzindo a navegação hierárquica que usa . (ponto final) para se referir ao diretório atual e .. (dois pontos finais) para o diretório pai, um dos criadores (não se sabe se Ken Thompson ou Dennis Ritchie) introduziu um teste simples no programa ls para esses casos, algo que seria ilustrado tipo:

if (filename[0] == '.') continue;

Quando na verdade deveria checar assim:

if (strcmp(filename, ".") == 0 || strcmp(filename, "..") == 0) continue;

Disso surgiram duas consequências não intencionais:

  • Os desenvolvedores passaram a usar essa mesma simplificação e introduziram novos bugs, por exemplo pulando a contagem de arquivos que começam com ponto.
  • Com isso foi criado o conceito de "arquivos ocultos" (dotfiles), usados pelos desenvolvedores nos arquivos de configuração que passaram a poluir o diretório home por serem "invisíveis" ao ls.

Fonte: Google+