Biến môi trường không chỉ dành cho sở thích của người dùng. Chúng là một cơ chế chung để truyền đạt nhiều thông tin cài đặt từ quy trình cha mẹ sang quy trình con mà nó bắt đầu.
Có rất nhiều trường hợp trong đó một quy trình sẽ đặt các biến môi trường cụ thể để chỉ ảnh hưởng đến các quy trình mà nó bắt đầu. Ví dụ: tập lệnh có thể cố tình đặt lại cài đặt ngôn ngữ cho các lệnh mà nó khởi động, để nó có thể phân tích đầu ra từ chúng. Các tập lệnh xây dựng cho nhiều gói phần mềm lớn sử dụng các yêu cầu lồng nhau make
phối hợp với nhau thông qua các biến môi trường. Các công cụ chuyên dụng có thể cần thay đổi điều kiện làm việc của các chương trình khác mà chúng bắt đầu bằng cách thực hiện các thủ thuật với $ LD_PRELOAD hoặc $ PATH.
Nếu một cái gì đó mà người dùng làm trong một cửa sổ khác trong khi một trình biên dịch dài đang chạy trong một cửa sổ khác sẽ chỉ thay đổi một cách kỳ diệu các biến môi trường của tất cả các quá trình của anh ta sau lưng, sự điên rồ và hỗn loạn sẽ xảy ra.
Các biến môi trường khác chứa thông tin về phiên cụ thể mà một quy trình được bắt đầu. Các chương trình mong đợi $ TERM để mô tả tập lệnh của thiết bị đầu cuối cụ thể (hoặc trình giả lập thiết bị đầu cuối) mà chúng được kết nối; làm cho một cài đặt chung cho mỗi người dùng sẽ khiến không thể đăng nhập vào cùng một hệ thống với một số loại thiết bị đầu cuối khác nhau. Ngay cả khi bạn chỉ có một phần cứng thiết bị đầu cuối và không bao giờ đăng nhập từ xa, các chương trình như screen
phụ thuộc vào việc đặt $ TERM khác nhau cho các quy trình chạy bên trong phiên của chúng.
Một câu hỏi tốt hơn là, tại sao chúng ta sử dụng cơ chế giao tiếp giữa quá trình với quy trình con cho các cài đặt tùy chọn người dùng, thay vì cơ sở dữ liệu theo người dùng?
Câu trả lời: Bởi vì nó hoạt động tốt đủ và những lợi ích của thực hiện một cơ sở dữ liệu cho mỗi người dùng không đủ lớn mà công việc của thay đổi tất cả mọi thứ để sử dụng mà thay vì biến môi trường sẽ được thực hiện.
(Tôi có thể nghĩ rất ít cài đặt ưu tiên nơi có sẽ không có một số trường hợp sử dụng nơi nó thuận tiện để thay đổi chúng chỉ để thực hiện một kịch bản duy nhất, chẳng hạn. Vì vậy, để không làm chức năng mất, mọi thứ vẫn sẽ cần phải được overridable bởi biến môi trường, dẫn đến sự phức tạp thêm và người dùng bối rối hơn).
Nó không phải như thể thay thế không tồn tại . Ví dụ: tài nguyên X là trên mỗi phiên hiển thị thay vì mỗi quy trình. Nhưng chúng rất khó truy cập cho các chương trình dòng lệnh - và các chương trình dòng lệnh thường cần phải hoạt động cho các thông tin đăng nhập từ xa thậm chí không có máy chủ X để kết nối.