Se você já mexeu nas variáveis de ambiente do seu sistema, deve ter notado algo curioso: existem tanto TMP quanto TEMP, ambas supostamente definindo onde arquivos temporários devem ser armazenados. Por que duas? Essa duplicação não é só um detalhe técnico, mas um reflexo de como decisões históricas e a evolução caótica de sistemas operacionais moldaram o que usamos hoje.
Antes das Variáveis: O Mundo de CP/M em 1973
Para entender por que temos TMP e TEMP, precisamos voltar a 1973, quando o CP/M dominava os microcomputadores. Esse sistema operacional, precursor de muitos conceitos modernos, não tinha variáveis de ambiente. Se você quisesse configurar onde um programa armazenava arquivos temporários, precisava recorrer a métodos arcaicos, como alterar bytes específicos no executável para indicar um drive — um processo manual e trabalhoso, como relatado por Raymond, autor do texto original, que configurava o WordStar dessa forma.
Essa ausência de padronização significava que cada programa era uma ilha, com configurações próprias e sem um mecanismo universal para lidar com algo tão básico quanto arquivos temporários. Não havia um 'lugar comum' definido pelo sistema, e isso criava um terreno fértil para a fragmentação que veríamos mais tarde. O CP/M, apesar de sua simplicidade, foi a base de inspiração para o MS-DOS, e essa falta de estrutura inicial ecoaria por décadas.
A Chegada do MS-DOS e a Duplicação de Variáveis em 1981
Avançando para 1981, o MS-DOS surge como uma evolução do CP/M, projetado para o processador 8086 e com um objetivo claro: permitir a tradução direta de programas do CP/M (escritos para o 8080) para o novo sistema. Embora tenha introduzido variáveis de ambiente — uma inovação na época —, os primeiros programas para MS-DOS, muitos deles portados do CP/M, ignoravam essas variáveis. Ninguém usava TMP ou TEMP porque os desenvolvedores ainda estavam presos a métodos antigos de configuração.
Com o tempo, programas começaram a ser escritos diretamente para MS-DOS, e as variáveis de ambiente ganharam tração como uma forma de armazenar dados de configuração. No entanto, o mercado não chegou a um consenso: alguns desenvolvedores optaram por TEMP, outros por TMP, criando uma divisão que persiste até hoje. O MS-DOS 2.0, ao introduzir o recurso de 'piping' (redirecionamento de saída entre programas), escolheu TEMP para definir onde salvar arquivos temporários, enquanto a função GetTempFileName do Windows, anos depois, priorizou TMP — uma decisão aparentemente arbitrária que só aprofundou a confusão.
Programas como DISKCOPY e EDIT, por exemplo, consultavam TEMP antes de TMP, enquanto outros faziam o oposto. Essa falta de padronização significava que o local usado para arquivos temporários dependia inteiramente do humor do desenvolvedor original. O resultado? Duas variáveis competindo pelo mesmo propósito, sem um vencedor claro.
Além da Curiosidade: Um Espelho da Evolução Tecnológica
Essa duplicação de TMP e TEMP não é apenas uma peculiaridade técnica; ela reflete como a tecnologia evolui de forma desordenada, muitas vezes guiada por decisões ad hoc e pela inércia de sistemas legados. Cada escolha — como a preferência do MS-DOS por TEMP ou do Windows por TMP — foi feita em um contexto específico, mas, sem um esforço de padronização, criou um legado de fragmentação que desenvolvedores e usuários ainda enfrentam ao configurar sistemas ou depurar problemas.
Quem perde aqui são os usuários menos técnicos, que podem se deparar com erros ou comportamentos inconsistentes sem entender por que um programa usa um diretório e outro usa outro. Quem ganha, ironicamente, são os curiosos e os historiadores da tecnologia, que veem nesse caso um microcosmo da bagunça que moldou os sistemas operacionais modernos. Mais do que isso, é um lembrete de que até as menores decisões de design têm impactos duradouros.
E Agora? Lidando com o Legado de TMP e TEMP
Hoje, ao abrir o painel de variáveis de ambiente no Windows, você ainda verá TMP e TEMP lado a lado, como rivais em uma disputa silenciosa. Embora a maioria dos programas modernos use a função GetTempFileName (que prefere TMP), a coexistência das duas variáveis significa que configurar ambas corretamente — ou entender qual delas um programa específico usa — continua sendo uma necessidade prática para evitar surpresas desagradáveis.
Fonte: Hacker News
