Tại sao lại tồn tại cả hai biến môi trường TMP và TEMP, và cái nào mới là đúng?

02 tháng 5, 2026·3 phút đọc

Bài viết giải thích lịch sử thú vị đằng sau sự tồn tại song song của hai biến môi trường TMP và TEMP trên Windows. Xuất phát từ sự hỗn loạn chuẩn hóa trong thời kỳ MS-DOS, hiện nay các ứng dụng Windows thường ưu tiên sử dụng TMP, nhưng cả hai biến vẫn được giữ lại để đảm bảo tính tương thích.

Tại sao lại tồn tại cả hai biến môi trường TMP và TEMP, và cái nào mới là đúng?

Nếu bạn từng "soi" kỹ các biến môi trường (environment variables) trên máy tính, có lẽ bạn sẽ nhận ra một sự kỳ lạ: có hai biến dùng để chỉ định vị trí lưu trữ các tệp tạm thời, đó là TMP và TEMP. Tại sao lại có hai biến? Và nếu chúng trỏ đến hai nơi khác nhau, thì cái nào mới là đúng?

Nguồn gốc từ thời kỳ CP/M

Quay ngược thời gian về năm 1973, hệ điều hành phổ biến trên các máy vi tính lúc bấy giờ là CP/M. Điểm thú vị là CP/M hoàn toàn không có khái niệm biến môi trường. Do đó, đương nhiên là không có TMP hay TEMP. Nếu bạn muốn cấu hình một chương trình để chỉ định nơi lưu tệp tạm, bạn phải can thiệp trực tiếp vào mã máy, ví dụ như sửa đổi một vài byte trong tệp thực thi (executable) để gán ổ đĩa mong muốn. Hồi đó, hầu hết các chương trình CP/M đều được cấu hình bằng cách "vá" (patch) như vậy.

Sự hỗn loạn của MS-DOS

Đến năm 1981, bộ vi xử lý 8086 và hệ điều hành MS-DOS ra đời. Thiết kế của chúng chịu ảnh hưởng mạnh mẽ từ CP/M, với mục tiêu chính là cho phép chuyển đổi mã nguồn từ CP/M sang MS-DOS một cách dễ dàng. Một trong những tính năng mới mà MS-DOS thêm vào so với CP/M chính là biến môi trường. Tuy nhiên, vì các chương trình đầu tiên cho MS-DOS đều được chuyển từ CP/M sang, nên chúng không sử dụng biến môi trường này. Bạn có thể đặt TEMP hay TMP, nhưng không chương trình nào để ý đến cả.

Theo thời gian, khi các chương trình mới được viết trực tiếp cho MS-DOS, các nhà phát triển bắt đầu nhận ra lợi ích của biến môi trường để lưu trữ cấu hình. Trong sự hỗn loạn của thị trường lúc bấy giờ, hai biến môi trường đã nổi lên như những ứng cử viên hàng đầu để chỉ định thư mục tạm: TEMP và TMP.

Khi MS-DOS 2.0 giới thiệu tính năng "piping" (chuyển hướng đầu ra của chương trình này làm đầu vào cho chương trình khác), hệ điều hành cần một nơi để tạo tệp tạm để mô phỏng quy trình này. Vì một lý do nào đó, các tác giả của MS-DOS đã chọn biến TEMP để kiểm soát vị trí các tệp này được tạo ra.

Tuy nhiên, việc COMMAND.COM chọn TEMP không ngăn cản các chương trình khác sử dụng TMP. Nhiều chương trình đã cố gắng chiều lòng cả hai phía bằng cách kiểm tra cả hai biến. Ví dụ, các chương trình cũ như DISKCOPY và EDIT sẽ tìm kiếm TEMP trước khi tìm TMP.

Windows chọn ai?

Windows cũng đi qua một quá trình tương tự, nhưng vì một lý do khác, các tác giả gốc của hàm GetTempFileName trong Windows lại chọn kiểm tra TMP trước TEMP.

Kết quả là, thư mục được sử dụng cho tệp tạm hoàn toàn phụ thuộc vào quyết định của từng chương trình. Các chương trình Windows hiện đại có xu hướng sử dụng hàm API GetTempFileName, do đó chúng sẽ ưu tiên sử dụng TMP.

Khi bạn mở hộp thoại cấu hình Biến môi trường, bạn vẫn sẽ thấy cả hai biến TMP và TEMP ở đó, như một sự đối đầu dai dẳng. Nó giống như cuộc chiến giữa Adidas và Puma, nhưng là phiên bản của những người đam mê công nghệ.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗