ตัวแปรสภาพแวดล้อมไม่ได้มีไว้สำหรับการตั้งค่าของผู้ใช้เท่านั้น เป็นกลไกทั่วไปสำหรับการสื่อสารข้อมูลการตั้งค่าที่หลากหลายจากกระบวนการหลักไปจนถึงกระบวนการย่อยที่เริ่มต้น
มีหลายกรณีที่กระบวนการจะตั้งค่าตัวแปรสภาพแวดล้อมเฉพาะเพื่อที่จะมีอิทธิพลต่อกระบวนการที่เพิ่งเริ่มต้น ตัวอย่างเช่นสคริปต์อาจรีเซ็ตการตั้งค่าโลแคลสำหรับคำสั่งที่เริ่มต้นโดยเจตนาเพื่อให้สามารถแยกเอาต์พุตจากพวกเขา บิลด์สคริปต์สำหรับแพ็กเกจซอฟต์แวร์ขนาดใหญ่จำนวนมากใช้การเรียกใช้แบบซ้อนของการmake
ประสานงานซึ่งกันและกันผ่านตัวแปรสภาวะแวดล้อม เครื่องมือพิเศษอาจจำเป็นต้องเปลี่ยนสภาพการทำงานของโปรแกรมอื่น ๆ ที่พวกเขาเริ่มต้นด้วยการเล่นกลกับ $ LD_PRELOAD หรือ $ PATH
หากบางสิ่งที่ผู้ใช้ทำในหน้าต่างที่แตกต่างกันในขณะที่การคอมไพล์แบบยาวกำลังทำงานอยู่ในอีกระบบหนึ่งจะเปลี่ยนตัวแปรสภาพแวดล้อมของกระบวนการทั้งหมดของเขาอย่างไม่น่าเชื่อเบื้องหลังความบ้าคลั่งและความโกลาหล
ตัวแปรสภาพแวดล้อมอื่น ๆ มีข้อมูลเกี่ยวกับเซสชั่นเฉพาะที่กระบวนการเริ่มต้นโปรแกรมคาดว่า $ TERM เพื่ออธิบายชุดคำสั่งของเทอร์มินัลเฉพาะ (หรือเทอร์มินัลอีมูเลเตอร์) ที่พวกเขาเชื่อมต่อ การตั้งค่าทั่วไปต่อผู้ใช้จะทำให้ไม่สามารถเข้าสู่ระบบเดียวกันด้วยเทอร์มินัลชนิดต่าง ๆ แม้ว่าคุณจะมีฮาร์ดแวร์เทอร์มินัลเพียงชิ้นเดียวและไม่เคยล็อกอินจากระยะไกลโปรแกรมเช่นscreen
ขึ้นอยู่กับการตั้งค่า $ TERM ที่แตกต่างกันสำหรับกระบวนการที่ทำงานภายในเซสชัน
คำถามที่ดีกว่าคือทำไมเราจึงใช้กลไกการสื่อสารแบบ process-to-subprocess สำหรับการตั้งค่าผู้ใช้แทนที่จะเป็นฐานข้อมูลต่อผู้ใช้
คำตอบ: เพราะมันทำงานได้ดีพอและประโยชน์ของการทำฐานข้อมูลต่อผู้ใช้จะไม่มากพอว่าการทำงานของการเปลี่ยนแปลงทุกอย่างที่จะใช้ที่แทนตัวแปรสภาพแวดล้อมที่จะทำ
(ฉันจะคิดว่าการตั้งค่าน้อยมากที่มีจะไม่เป็นกรณีการใช้งานบางอย่างที่มันสะดวกที่จะเปลี่ยนพวกเขาเพียงแค่สำหรับการรันสคริปต์เดียวเช่น. ดังนั้นเพื่อไม่ให้การทำงานที่สูญเสียทุกอย่างยังคงต้องเป็นoverridableโดย ตัวแปรสภาพแวดล้อมซึ่งส่งผลให้เกิดความซับซ้อนเพิ่มขึ้นและผู้ใช้ที่สับสนมากขึ้น)
มันไม่ได้หมายความว่าทางเลือกที่ไม่อยู่ ตัวอย่างเช่นทรัพยากร X เป็นต่อเซสชันการแสดงผลมากกว่าต่อกระบวนการ แต่พวกเขายากที่จะเข้าถึงสำหรับโปรแกรมบรรทัดคำสั่ง - และโปรแกรมบรรทัดคำสั่งจะต้องทำงานให้กับการเข้าสู่ระบบจากระยะไกลที่ไม่ได้มีเซิร์ฟเวอร์ X เพื่อเชื่อมต่อกับ