รายการตัวแปรสภาพแวดล้อมใน Linux/Unix

⚡ สรุปอย่างชาญฉลาด

ตัวแปรสภาพแวดล้อมใน Linux และ Unix คือค่าชื่อแบบไดนามิกที่กำหนดวิธีการทำงานของโปรแกรมและเชลล์ โดยจะจัดเก็บการตั้งค่าต่างๆ เช่น PATH, โฟลเดอร์โฮม, โปรแกรมแก้ไขข้อความเริ่มต้น, ภาษา และเชลล์ที่ใช้งานอยู่ในปัจจุบัน

  • 🌱 มันคืออะไร: ตัวแปรสภาพแวดล้อมเก็บค่าแบบไดนามิกที่ส่งผลต่อกระบวนการต่างๆ และสามารถสร้าง แก้ไข และลบได้
  • 🧭 เส้นทาง: ตัวแปร PATH แสดงรายการไดเร็กทอรีที่เชลล์ใช้ในการค้นหาและเรียกใช้คำสั่งที่สามารถเรียกใช้งานได้
  • 🔎 คุณค่าของการอ่าน: คำสั่ง echo จะแสดงค่าตัวแปรเพียงค่าเดียว ในขณะที่คำสั่ง env และ printenv จะแสดงรายการตัวแปรสภาพแวดล้อมทั้งหมด
  • 🆕 การสร้าง: กำหนดค่าโดยใช้ NAME=value จากนั้นใช้คำสั่ง export เพื่อให้กระบวนการย่อยสามารถเข้าถึงค่าดังกล่าวได้
  • 🗑️ การลบ: คำสั่ง unset จะลบตัวแปรและค่าของตัวแปรนั้นออกจากเซสชันเชลล์ปัจจุบัน
  • 💾 วิริยะ: เพิ่มบรรทัด export ลงใน ~/.bashrc หรือ /etc/environment เพื่อเก็บค่าตัวแปรไว้ใช้ระหว่างเซสชันต่างๆ
  • 🤖 ความช่วยเหลือจาก AI: ผู้ช่วย AI และ GitHub Copilot สามารถตรวจสอบตัวแปรและสร้างสคริปต์เชลล์ที่ใช้ตัวแปรเหล่านั้นได้

รายชื่อตัวแปรสภาพแวดล้อมทั่วไปใน Linux และ Unix

ตัวแปรสภาพแวดล้อมเป็นสิ่งแรกๆ ที่ควรทำความเข้าใจในทุกๆ ด้าน ลินุกซ์ หรือระบบ Unix เนื่องจากพวกมันควบคุมการทำงานของโปรแกรมและเชลล์ของคุณอย่างเงียบๆ คู่มือนี้จะอธิบายว่าพวกมันคืออะไร ประเภทที่พบบ่อยที่สุด และวิธีการอ่าน สร้าง และลบพวกมัน

สภาพแวดล้อมคอมพิวเตอร์คืออะไร?

สภาพแวดล้อมการประมวลผลคือแพลตฟอร์ม (แพลตฟอร์ม = ระบบปฏิบัติการ + โปรเซสเซอร์) ที่ผู้ใช้สามารถเรียกใช้โปรแกรมได้

ตัวแปรคืออะไร?

ในวิทยาการคอมพิวเตอร์ ตัวแปรคือตำแหน่งสำหรับจัดเก็บค่า ซึ่งอาจเป็นชื่อไฟล์ ข้อความ ตัวเลข หรือข้อมูลอื่นๆ โดยปกติจะเรียกชื่อตัวแปรด้วยชื่อเชิงสัญลักษณ์ที่กำหนดเมื่อสร้างตัวแปรขึ้นมา ค่าที่จัดเก็บไว้สามารถแสดงผล ลบ แก้ไข และบันทึกใหม่ได้

ตัวแปรมีบทบาทสำคัญในการเขียนโปรแกรมคอมพิวเตอร์ เพราะช่วยให้นักเขียนโปรแกรมสามารถเขียนโปรแกรมได้อย่างยืดหยุ่น เนื่องจากตัวแปรเหล่านี้เชื่อมโยงกับระบบปฏิบัติการที่คุณใช้งาน จึงเป็นสิ่งสำคัญที่จะต้องรู้จักตัวแปรบางตัวและวิธีการควบคุมตัวแปรเหล่านั้น

ตัวแปรสภาพแวดล้อมคืออะไร?

ตัวแปรสภาพแวดล้อมคือค่าแบบไดนามิกที่มีผลต่อกระบวนการหรือโปรแกรมบนคอมพิวเตอร์ ตัวแปรสภาพแวดล้อมมีอยู่ในระบบปฏิบัติการทุกระบบ แต่ประเภทอาจแตกต่างกันไป ตัวแปรสภาพแวดล้อมสามารถสร้าง แก้ไข บันทึก และลบได้ และให้ข้อมูลเกี่ยวกับพฤติกรรมของระบบ

ตัวแปรสภาพแวดล้อมสามารถเปลี่ยนแปลงวิธีการทำงานของซอฟต์แวร์และโปรแกรมได้ ตัวอย่างเช่น ตัวแปรสภาพแวดล้อม $LANG จะเก็บภาษาที่ผู้ใช้เข้าใจ ค่านี้จะถูกอ่านโดยแอปพลิเคชันเพื่อให้ผู้ใช้ชาวจีนเห็นอินเทอร์เฟซภาษาจีนกลาง ในขณะที่ผู้ใช้ชาวอเมริกันเห็นอินเทอร์เฟซภาษาอังกฤษ

เรามาศึกษาตัวแปรด้านสิ่งแวดล้อมทั่วไปบางประการกัน:

ตัวแปร Descriptไอออน
เส้นทาง ตัวแปรนี้ประกอบด้วยรายการไดเร็กทอรีที่คั่นด้วยเครื่องหมายโคลอน (:) ซึ่งระบบของคุณใช้ค้นหาไฟล์ที่สามารถเรียกใช้งานได้ เมื่อคุณป้อนคำสั่งในเทอร์มินัล เชลล์จะค้นหาคำสั่งนั้นในไดเร็กทอรีที่ระบุไว้ในตัวแปร $PATH หากพบคำสั่ง ระบบจะเรียกใช้คำสั่งนั้น มิเช่นนั้น ระบบจะแสดงข้อผิดพลาดว่า 'ไม่พบคำสั่ง'
USER ชื่อผู้ใช้
หน้าหลัก เส้นทางเริ่มต้นไปยังโฮมไดเร็กตอรี่ของผู้ใช้
บรรณาธิการ เส้นทางไปยังโปรแกรมที่ใช้แก้ไขเนื้อหาของไฟล์
โพสต์ ID เฉพาะของผู้ใช้
ระยะ โปรแกรมจำลองเทอร์มินัลเริ่มต้น
SHELL เชลล์ที่ผู้ใช้ใช้

การเข้าถึงค่าตัวแปร

หากต้องการตรวจสอบค่าของตัวแปร ให้ใช้คำสั่ง echo:

echo $VARIABLE

ตัวอย่างเช่น ภาพหน้าจอด้านล่างแสดงค่าของตัวแปร PATH ที่แสดงด้วยคำสั่ง echo

การแสดงค่าตัวแปร PATH ด้วยคำสั่ง echo

สามารถอ่านค่าตัวแปรสภาพแวดล้อมใดๆ ก็ได้ด้วยวิธีเดียวกัน ผลลัพธ์ด้านล่างแสดงการใช้คำสั่ง echo เพื่อแสดงค่าของตัวแปร

ผลลัพธ์ของคำสั่ง echo ที่แสดงค่าตัวแปรสภาพแวดล้อม

ตัวแปรนั้นคำนึงถึงตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณพิมพ์ชื่อตัวแปรด้วยตัวพิมพ์ใหญ่และตัวพิมพ์เล็กที่ถูกต้อง มิเช่นนั้นคุณอาจไม่ได้รับผลลัพธ์ที่ต้องการ หากต้องการแสดงรายการตัวแปรสภาพแวดล้อมทั้งหมดพร้อมกัน ให้ใช้คำสั่ง env ดังที่แสดงด้านล่าง

คำสั่ง env แสดงรายการตัวแปรสภาพแวดล้อมทั้งหมดในเทอร์มินัล

ตั้งค่าตัวแปรสภาพแวดล้อมใหม่

คุณสามารถสร้างตัวแปรที่กำหนดเองได้โดยใช้ไวยากรณ์นี้:

VARIABLE_NAME=variable_value

ย้ำอีกครั้งว่า ชื่อตัวแปรนั้นคำนึงถึงตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก และโดยปกติจะเขียนด้วยตัวพิมพ์ใหญ่ทั้งหมด ตัวแปรที่สร้างด้วยวิธีนี้เป็นตัวแปรเชลล์เฉพาะที่เชลล์ปัจจุบันเท่านั้นที่สามารถมองเห็นได้ หากต้องการเปลี่ยนให้เป็นตัวแปรสภาพแวดล้อมที่กระบวนการลูกจะได้รับสืบทอดด้วย ให้ใช้คำสั่ง export:

export VARIABLE_NAME=value

ภาพหน้าจอด้านล่างแสดงตัวแปรใหม่ที่กำลังถูกสร้างขึ้นและแสดงผลด้วยคำสั่ง echo

การสร้างและแสดงตัวแปรสภาพแวดล้อมที่ผู้ใช้กำหนดเองใหม่

การลบตัวแปร

ไวยากรณ์ต่อไปนี้ใช้สำหรับลบตัวแปรออกจากระบบ:

unset variablename

คำสั่งนี้จะลบตัวแปรและค่าของตัวแปรนั้นออกจากเซสชันเชลล์ปัจจุบัน ดังแสดงด้านล่าง

การลบตัวแปรสภาพแวดล้อมด้วยคำสั่ง unset

คำถามที่พบบ่อย

ตัวแปรเชลล์มีอยู่เฉพาะในเชลล์ปัจจุบันเท่านั้นและจะไม่ถูกส่งต่อไปยังโปรแกรมอื่น ส่วนตัวแปรสภาพแวดล้อมคือตัวแปรเชลล์ที่ถูกส่งออก (exported) ดังนั้นกระบวนการลูกที่เริ่มต้นจากเชลล์นั้นจะได้รับตัวแปรนั้นมาด้วย ใช้คำสั่ง export เพื่อส่งออกตัวแปร

ตัวแปรที่ตั้งค่าไว้ในเทอร์มินัลจะหายไปเมื่อคุณปิดเซสชัน หากต้องการเก็บตัวแปรเหล่านั้นไว้ ให้เพิ่มบรรทัด `export` ลงในไฟล์เริ่มต้นระบบ: `~/.bashrc` หรือ `~/.profile` สำหรับผู้ใช้คนเดียว หรือ `/etc/environment` สำหรับผู้ใช้ทุกคนในระบบ โหลดไฟล์ใหม่หรือเปิดเทอร์มินัลอีกครั้งเพื่อใช้งานการเปลี่ยนแปลง

เพิ่มไดเร็กทอรีใหม่ลงใน PATH ที่มีอยู่แล้ว เพื่อไม่ให้เขียนทับ: `export PATH=$PATH:/your/new/directory` คำสั่งนี้จะเพิ่มโฟลเดอร์ของคุณลงในรายการที่เชลล์ใช้ค้นหาคำสั่ง ใส่บรรทัดเดียวกันนี้ในไฟล์ `~/.bashrc` เพื่อให้การเปลี่ยนแปลงมีผลในเซสชันใหม่ ๆ

คำสั่ง printenv แสดงเฉพาะตัวแปรสภาพแวดล้อม และสามารถแสดงได้เพียงตัวแปรเดียว เช่น printenv HOME คำสั่ง env ก็แสดงตัวแปรสภาพแวดล้อมเช่นกัน และสามารถเรียกใช้โปรแกรมด้วยสภาพแวดล้อมที่แก้ไขแล้วได้ คำสั่ง set แสดงทุกอย่าง รวมถึงตัวแปรและฟังก์ชันของเชลล์ ไม่ใช่แค่ตัวแปรที่ส่งออกเท่านั้น

โดยปกติแล้วหมายความว่าคุณเขียนทับ PATH แทนที่จะเพิ่มเข้าไป ทำให้เชลล์ไม่สามารถค้นหาคำสั่งมาตรฐานได้อีกต่อไป ควรใส่ $PATH ทุกครั้งเมื่อตั้งค่า หากต้องการกู้คืนในเซสชันปัจจุบัน ให้รันคำสั่ง export PATH=/usr/local/bin:/usr/bin:/bin จากนั้นแก้ไขไฟล์เริ่มต้นของคุณ

การใช้ตัวแปรสภาพแวดล้อมนั้นสะดวกแต่ก็มีความเสี่ยง ตัวแปรสภาพแวดล้อมสามารถอ่านได้จาก /proc และจะถูกส่งต่อไปยังกระบวนการลูก และมักจะรั่วไหลไปในบันทึกหรือรายงานข้อผิดพลาด สำหรับข้อมูลลับที่สำคัญ ควรใช้โปรแกรมจัดการข้อมูลลับโดยเฉพาะหรือไฟล์ที่เข้ารหัสที่มีการจำกัดสิทธิ์แทนการใช้ตัวแปรธรรมดา

ผู้ช่วย AI สามารถอธิบายการทำงานของตัวแปรที่ไม่คุ้นเคย ตรวจสอบไฟล์การกำหนดค่าเพื่อหาข้อมูลที่ขาดหายหรือซ้ำซ้อน และแจ้งเตือนข้อมูลลับที่ถูกเปิดเผยโดยไม่ได้ตั้งใจในตัวแปร นอกจากนี้ เครื่องมือการเรียนรู้ของเครื่องยังสามารถสแกนสภาพแวดล้อมของกระบวนการในเซิร์ฟเวอร์หลายเครื่องเพื่อตรวจจับการกำหนดค่าที่ไม่ถูกต้อง ซึ่งการตรวจสอบด้วยตนเองจะเป็นเรื่องยุ่งยาก

ใช่. นักบิน GitHub สามารถสร้างคำสั่งส่งออก แก้ไขไฟล์ ~/.bashrc และสคริปต์เชลล์ที่อ่านตัวแปรต่างๆ เช่น $HOME หรือ $PATH ได้ โปรแกรมจะแนะนำไวยากรณ์ขณะที่คุณพิมพ์ แต่คุณควรตรวจสอบโค้ดใดๆ ที่เกี่ยวข้องกับการจัดการข้อมูลรับรองก่อนที่จะเรียกใช้งาน

สรุปโพสต์นี้ด้วย: