【TMP 和 TEMP 为啥一直并存?原来是几十年前系统标准缺失留下的历史遗留坑】
快速阅读:由于早期操作系统缺乏环境参数,程序配置曾依赖于直接修改二进制代码。随着 MS-DOS 引入环境变量,开发者们在缺乏统一标准的情况下各自为政,导致了今天 `TMP` 与 `TEMP` 并存的混乱局面。
在那个内存以 KB 计算的年代,配置一个程序不需要什么配置文件,甚至不需要输入指令。那时候的人们直接“打补丁”:通过修改二进制代码中的特定字节,来告诉程序打印机在哪,或者自定义一段子程序。这听起来像是在拆解时钟,但对于当时的开发者来说,这是在极其有限的资源下压榨性能的唯一手段。
当 MS-DOS 试图在兼容 CP/M 的基础上引入环境变量时,混乱就开始了。因为最初的大量程序都是从 CP/M 直接翻译过来的,它们根本不认识环境变量。直到后来,开发者们发现可以用这种方式存储配置,于是“江湖”上出现了两派:一派用 `TEMP`,另一派用 `TMP`。
这就像是在没有交通规则的荒野上开车,有人觉得走左边,有人觉得走右边。MS-DOS 的核心组件选择了 `TEMP`,而 Windows 后来的 API 函数却偏好 `TMP`。
有网友提到,这种混乱其实是“临时决策”的永久化。这种现象在现代依然随处可见,比如 Linux 下各种不按 XDG 标准走的配置文件,或者不同软件对环境变量大小写的执念。
这种由于缺乏标准而导致的碎片化,本质上是开发者在“各自为政”与“达成共识”之间的博弈失败。当标准缺失时,每个开发者都在为自己的逻辑寻找出路,最后留给后人的,就是一堆需要兼容的“历史遗留问题”。
现在的软件越来越臃肿,配置越来越复杂,但底层的逻辑依然在为几十年前的那个“谁才是对的”争论买单。
devblogs.microsoft.com/oldnewthing/20150417-00/
