Se você já mexeu nas variáveis de ambiente do Windows, provavelmente notou duas delas disputando o mesmo propósito: TMP e TEMP, ambas definindo onde arquivos temporários devem ser salvos. Essa duplicidade não é um erro, mas um resquício de decisões históricas que remontam aos primórdios dos sistemas operacionais como CP/M e MS-DOS. Mais do que uma curiosidade técnica, isso expõe como escolhas aparentemente triviais podem criar legados duradouros na tecnologia.
Antes do MS-DOS: Configurações Manuais no CP/M
Volte para 1973, quando o CP/M dominava os microcomputadores. Nesse sistema operacional, não havia variáveis de ambiente — nem TMP, nem TEMP. Se você quisesse configurar onde um programa armazenava arquivos temporários, precisava recorrer a métodos manuais, como alterar bytes específicos no executável para indicar o drive de destino, um processo conhecido como 'patching'. Era uma era de personalização extrema, onde até manuais de softwares como o WordStar traziam instruções detalhadas sobre quais bytes modificar para ajustar funcionalidades ou suportar impressoras específicas.
Essa falta de padronização significava que cada programa tinha sua própria lógica, muitas vezes incompatível com outros. Não havia um mecanismo universal para configurações globais, o que tornava a experiência do usuário fragmentada e trabalhosa. O CP/M, apesar de sua popularidade, era um reflexo de um tempo em que a tecnologia ainda não priorizava conveniência ou interoperabilidade, deixando um vácuo que sistemas futuros tentariam preencher.
Esse cenário de caos configuracional preparou o terreno para a chegada do MS-DOS em 1981, inspirado diretamente no CP/M. A transição não foi apenas técnica, mas também cultural: desenvolvedores e usuários estavam acostumados a um mundo sem padrões, algo que influenciaria as decisões de design do novo sistema operacional da Microsoft.
A Chegada do MS-DOS e a Duplicidade de TMP e TEMP
Quando o MS-DOS surgiu em 1981, junto com o processador 8086, seu principal objetivo era manter compatibilidade com programas do CP/M, permitindo a tradução direta de código do processador 8080 para o 8086. Uma das inovações do MS-DOS foi a introdução de variáveis de ambiente, algo inexistente no CP/M. No entanto, como os primeiros programas para MS-DOS eram portas diretas de CP/M, ninguém usava essas variáveis inicialmente — elas eram apenas uma possibilidade ignorada.
Com o tempo, desenvolvedores começaram a criar softwares nativos para MS-DOS, e as variáveis de ambiente se tornaram um método conveniente para armazenar configurações, como o local de arquivos temporários. Foi nesse momento de liberdade criativa que TMP e TEMP emergiram como opções concorrentes, sem um padrão claro. O próprio MS-DOS, a partir da versão 2.0, escolheu TEMP para definir onde armazenar arquivos temporários usados em operações como redirecionamento de saída via pipes, enquanto outros programas, dependendo do capricho de seus criadores, optavam por TMP ou verificavam ambas, em ordens variadas.
No Windows, a função GetTempFileName, usada por muitos programas, inverteu a prioridade, preferindo TMP antes de TEMP, criando ainda mais inconsistência. Ferramentas clássicas do MS-DOS, como DISKCOPY e EDIT, priorizavam TEMP, mostrando que nem mesmo dentro do ecossistema Microsoft havia consenso. Essa falta de uniformidade se cristalizou, e até hoje ambas as variáveis coexistem nas configurações de ambiente do Windows, como relíquias de um passado desordenado.
Além da Curiosidade: O Peso das Decisões Históricas
Essa duplicidade entre TMP e TEMP não é apenas uma nota de rodapé na história da computação; ela ilustra como decisões aparentemente menores podem ter impactos duradouros. Cada programa decide por si só qual variável usar, ou em que ordem checá-las, o que pode gerar inconsistências em sistemas modernos — um programa pode criar arquivos temporários em um local enquanto outro usa um diretório diferente, complicando a manutenção e a segurança em ambientes corporativos ou de desenvolvimento.
Mais profundamente, isso reflete a ausência de padronização nos primórdios da computação pessoal, um período em que a inovação muitas vezes superava a necessidade de coerência. Quem perde são os usuários e administradores de sistemas, que precisam lidar com essas peculiaridades décadas depois, enquanto os ganhadores foram, ironicamente, os desenvolvedores originais que tiveram liberdade total para implementar suas preferências pessoais, sem pensar no futuro.
E Agora? Lidando com o Legado de TMP e TEMP
Para o futuro imediato, não há sinais de que TMP ou TEMP serão unificados — o Windows continuará a suportar ambas, mantendo esse legado histórico. Administradores de sistemas e desenvolvedores precisam estar atentos ao configurar essas variáveis, garantindo que apontem para o mesmo diretório se quiserem evitar fragmentação de arquivos temporários, algo que pode ser feito diretamente no painel de controle de variáveis de ambiente do Windows.
Fonte: Hacker News
