System and User Environment Variables (Biến môi trường Hệ thống và Người dùng) luôn là chủ đề phức tạp đối với người dùng Windows OS hàng ngày. Chúng làm gì? Hướng dẫn trên mạng nói thêm biến PATH, nhưng nó là gì? Tìm chúng ở đâu? Tất cả câu hỏi này sẽ được trả lời trong bài viết. Chúng tôi cố gắng đưa ra cái nhìn tổng quan (high-level overview) về System và User Environment Variables là gì và cách tận dụng chúng.
Trong bài này, chúng ta sẽ thảo luận về Environment Variables, System và User Environment Variables và cách thêm/sửa chúng. Sau đó chuyển sang Dynamic System Variables (Biến hệ thống động) và cách dùng chúng trong command prompt.
Environment Variable trong Windows OS là gì
Environment Variable (Biến môi trường) hình thành từ hai từ riêng: 'Environment' (Môi trường) và 'Variable' (Biến). Hãy bàn về 'variable' trước. Nghĩa là thực thể đó có thể lưu giá trị và thay đổi từ máy tính này sang máy tính khác. Windows cung cấp một 'Environment' cho ứng dụng thực thi và thực hiện các phép toán, đó là từ đầu tiên. Kết hợp cả hai, Environment Variables là những đối tượng động lưu trữ giá trị do môi trường cung cấp. Môi trường cung cấp giá trị giúp các chương trình khác lấy thông tin quan trọng về hệ thống. Ví dụ có biến môi trường tên 'windir' tương ứng với thư mục cài Windows. Để thấy hoạt động, mở cửa sổ Explorer và gõ '%windir%' vào thanh địa chỉ. Thư mục cài Windows sẽ mở ra.
Tương tự, bạn có thể tham chiếu thư mục Windows bằng biến 'windir' trong các chương trình và script khác. Có nhiều biến khác có thể truy cập, 'TEMP' hoặc 'TMP' là biến trỏ đến thư mục chứa tất cả file tạm. Biến phổ biến nhất, 'Path' là biến trỏ đến các thư mục chứa file thực thi (executable). Nhờ đó bạn chạy chương trình từ Command Prompt ở bất kỳ thư mục nào. Chúng tôi giải thích Path sau trong bài. Tất cả biến này rất tiện khi bạn phát triển hoặc dùng shell nhiều.
System & User Environment Variables là gì
Rất giống cách Registry hoạt động trên Windows, chúng ta có System và User Environment Variables. System variables (Biến hệ thống) được chấp nhận toàn hệ thống và không thay đổi giữa user này sang user khác. Trong khi User Environments (Biến môi trường người dùng) được cấu hình khác nhau cho từng user. Bạn có thể thêm biến của mình dưới user để user khác không bị ảnh hưởng.
Chỉ để tham khảo vì chúng ta bàn sâu. System Variables được đánh giá (evaluated) trước User Variables. Vì vậy, nếu có user variable trùng tên system variable, user variable sẽ được ưu tiên. Biến Path được tạo theo cách khác. Path hiệu lực (effective Path) sẽ là User Path variable nối tiếp (appended) sau System Path variable. Vì vậy thứ tự entry sẽ là system entries rồi user entries.
Cách thêm & sửa Environment Variables
Cảnh báo nhỏ trước khi đi sâu. Hãy tạo điểm khôi phục hệ thống (system restore point), và cố gắng không can thiệp vào cài đặt hiện có của hệ thống. Trừ khi bạn rất chắc về hành động. Để mở cửa sổ 'Environment Variables', làm theo các bước:
- Nhấp chuột phải biểu tượng 'This PC' (Máy tính này) chọn 'Properties' (Thuộc tính).
- Trong cửa sổ này chọn 'Advanced System Settings' (Cài đặt hệ thống nâng cao) từ bên trái.
- Nhấn nút cuối cùng 'Environment Variables' (Biến môi trường) để mở cửa sổ đích.

Sau khi mở, bạn xem được User và System variables riêng biệt. Tên biến ở cột đầu, giá trị ở cột hai. Các nút tương ứng dưới bảng cho phép 'Add' (Thêm), 'Edit' (Sửa), 'Delete' (Xóa) các biến này.
Sử dụng biến Path
Path là biến môi trường dùng nhiều nhất. Như đã nói, nó trỏ đến thư mục chứa file thực thi. Khi bạn thiết lập đúng Path variable, bạn có thể dùng các file thực thi này từ bất kỳ đâu trong hệ thống. Hãy hiểu qua ví dụ. Mở cửa sổ environment variables và tìm 'Path' trong system variables.

Nhấp 'Edit' (Sửa) rồi nhấp 'New' (Mới) bừa chơi với các điều khiển khác. Bây giờ nhấp browse (duyệt) chọn thư mục chứa file thực thi bạn muốn. Nhấp 'Ok' lưu tất cả. Tôi thêm file thực thi 'Visual Studio Code' vào path.

Bây giờ để chạy ứng dụng, mở Command Prompt và gõ tên file thực thi trong thư mục đó. Bạn có thể thêm tham số nếu chương trình hỗ trợ. Chương trình sẽ chạy từ command prompt mà không thực sự ở thư mục bạn chạy lệnh. Đó là vẻ đẹp của biến Path.
Danh sách tất cả Environment Variables
Mở command prompt gõ 'SET' và nhấn Enter. Toàn bộ danh sách biến với giá trị hiện tại sẽ hiển thị, bạn tham khảo để thay đổi máy tính.
Dynamic Environment Variables (Biến môi trường động)
Khác với biến thông thường, dynamic environment variables được cung cấp bởi CMD chứ không phải hệ thống. Bạn không thể thay đổi giá trị các biến này và chúng mở rộng (expand) thành các giá trị rời rạc khác nhau khi truy vấn. Chúng ta thường dùng các biến này cho xử lý batch (batch processing) và chúng không lưu trong môi trường. Ngay cả lệnh 'SET' cũng không tiết lộ các biến này. Dưới đây là một số dynamic environment variables:
Đọc thêm: Cách thêm Environment Variables vào Menu ngữ cảnh (Context Menu).
Danh sách biến môi trường trong Windows 11/10
%APPDATA% – C:\Users\<username>\AppData\Roaming
%ALLUSERSPROFILE% – C:\ProgramData
%CD% – Gõ lệnh này cho thư mục hiện tại bạn đang làm việc.
%COMMONPROGRAMFILES% – C:\Program Files\Common Files
%COMMONPROGRAMFILES(x86)% – C:\Program Files (x86)\Common Files
%COMMONPRGRAMW6432% – C:\Program Files\Common Files
%CMDEXTVERSION% – Biến này mở rộng thành phiên bản command-line extensions.
%COMSPEC% – C:\Windows\System32\cmd.exe
%DATE%: – Biến này cho ngày hiện tại theo định dạng ngày ưu tiên.
%ERRORLEVEL% – Xác định mức lỗi do lệnh cuối cùng thiết lập.
%HOMEDRIVE% – C:\
%HOMEPATH% -C:\Users\<username>
%LOCALAPPDATA% – C:\Users\<username>\AppData\Local
%LOGONSERVER% – \\<domain_logon_server>
%PATH% – C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
%PATHEXT% – .com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.msc
%PROGRAMDATA% – C:\ProgramData
%PROGRAMFILES% – C:\Program Files
%PROGRAMW6432% – C:\Program Files
%PROGRAMFILES(X86)% – C:\Program Files (x86)
%PROMPT% – $P$G
%SYSTEMDRIVE% – C:
%SYSTEMROOT% – C:\Windows
%TIME% – Tương tự, cho thời gian hiện tại theo định dạng thời gian ưu tiên.
%TMP% – C:\Users\<username>\AppData\Local\Temp
%TEMP% – C:\Users\<username>\AppData\Local\Temp
%USERNAME% – <username>
%USERPROFILE% – C:\Users\<username>
%USERDOMAIN% – Userdomain liên kết với user hiện tại.
%USERDOMAIN_ROAMINGPROFILE% – Userdomain liên kết với roaming profile.
%WINDIR% – C:\Windows
%PUBLIC% – C:\Users\Public
%PSMODULEPATH% – %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\
%ONEDRIVE% – C:\Users\<username>\OneDrive
%DRVERDATA% – C:\Windows\System32\Drivers\DriverData
%CMDCMDLINE% – Xuất dòng lệnh dùng để khởi chạy phiên Command Prompt hiện tại. (Command Prompt.)
%COMPUTERNAME% -Xuất tên hệ thống.
%PROCESSOR_REVISION% – Xuất revision bộ xử lý.
%PROCESSOR_IDENTIFIER% – Xuất identifier bộ xử lý.
%PROCESSOR_LEVEL% – Xuất level bộ xử lý.
%RANDOM% – Biến này in số ngẫu nhiên từ 0 đến 32767
%NUMBER_OF_PROCESSORS% – Xuất số lõi vật lý và ảo.
%OS% – Windows_NT
Đó là hầu như tất cả về System và User Environment Variables trên Windows. Windows có thêm nhiều biến khác – đừng quên kiểm tra bằng lệnh 'SET'.
MẸO: Rapid Environment Editor là trình soạn thảo Environment Variables mạnh mẽ cho Windows.
