ตัวแปรระบบ (Environment Variable) เป็นตัวแปรของระบบที่เก็บค่าต่างๆที่ระบบต้องเอาไปใช้งาน ซึ่งเราก็สามารถเอามาใช้งานได้ด้วยเช่นกัน เช่น ใช้ภายใต้แบชเชลล์ ใช้กับเครื่องมือหรือแอพพลิเคชั่นอื่นๆ ตัวแปรระบบมีทั้งค่าที่กำหนดโดยระบบซึ่งผู้ใช้งานสามารถแก้ไขได้ และค่าที่กำหนดโดยผู้ใช้งานเองผ่านคำสั่ง หรือกำหนดไว้อย่างถาวรในไฟล์ startup หรือ ไฟล์สคริป (shell script) ค่าที่เก็บในตัวแปรระบบจะเป็นข้อความ (string) เราสามารถดูตัวแปรระบบที่มีอยู่ได้โดยใช้คำสั่ง set
ภาพแสดงการใช้คำสั่ง set
เราสามารถแสดงค่าในตัวแปร Environment Variable ได้โดยใช้คำสั่ง echo ตามด้วยชื่อตัวแปร เช่น echo $SHELL จะแสดงว่าเราใช้ shell แบบใดอยู่ เช่น /bin/bash หมายถึงเราใช้แบชเชลล์อยู่ เราสามารถกำหนดค่าตัวแปรใหม่หรือแก้ไขค่าตัวแปรได้โดยใช้คำสั่ง export เช่น export NEWVARIABLE=123 เป็นการกำหนดตัวแปรชื่อ NEWVARIABLE และกำหนดค่า 123 ให้กับตัวแปร หากเราต้องการกำหนดค่าตัวแปรใหม่แบบถาวรให้เราเพิ่มบรรทัดคำสั่ง export NEWVARIABLE=123 ในไฟล์ ~/.bashrc จากนั้นให้เริ่มต้นเรียกเชลล์ มาทำงานใหม่อีกครั้ง โดยการกดปุ่ม Alt+F และกด r ตามด้วย Enter ในหน้าต่างที่ถามให้ใส่คำสั่ง
ภาพการแสดงข้อมูลใน Environment Variable
ตัวแปร HOME
ตัวแปร HOME เป็น Environment Variable ที่เก็บค่าไดเร็คทอรี่ home ของผู้ใช้งาน เช่น ถ้าเราใช้คำสั่ง cd เฉยๆจะเป็นการย้ายไปที่ไดเร็คทอรี่ home ของผู้ใช้งานโดยใช้ค่าที่เก็บใน ตัวแปร HOME เราสามารถใช้อักขระ “ ~ “ แทนการใช้ $HOME ในการเรียกใช้ตัวแปร HOME เช่น cd ~ หรือ cd $HOME ให้ความหมายเดียวกันคือเป็นการย้ายไปที่ไดเร็คทอรี่ home ของผู้ใช้งาน
ตัวแปร PATH
พาธ(path) หมายถึงลำดับของไดเร็คทอรี่ที่จะนำเราไปยังไฟล์ที่ต้องการ แต่ละพาธในตัวแปร PATH จะคั่นด้วยเครื่องหมาย : ค่าว่าง หรือเครื่องหมาย ./ จะหมายถึงไดเร็คทอรี่ปัจจุบันที่เราทำงานอยู่ (present working diretory)
ภาพการแสดงข้อมูล PATH
ตัวแปร PS1 (prompt statement)
PS1 เป็นตัวแปรที่เก็บสิ่งที่เราต้องการแสดงใน prompt ของหน้าจอ terminal ซึ่งเราสามารถปรับแต่งได้โดยกำหนดค่าดังต่อไปนี้ในตัวแปร PS1 ตามต้องการ
\u – ชื่อผู้ใช้งาน
\h – เครื่องที่ใช้งาน
\w – ไดเร็คทอรี่ปัจจุบัน
\! – เลขที่ลำดับของคำสั่งนี้ (History number of this command)
\d – วันที่
โดยเราต้องระบุตัวแปรไว้ภายใต้ ‘ (single quote) ตามตัวอย่าง export PS1=’\u@\h:\w$ ‘ ซึ่งผลลัพธ์ที่ได้คือ me@example.com:~$ ก่อนทำการแก้ไขตัวแปร PS1 ให้เก็บค่าเดิมไว้ก่อนโดยใช้คำสั่ง export OLD_PS1=$PS1 เผื่อว่าเราต้องการแก้ไขกลับค่าเดิมจะได้ทำได้ง่ายๆโดยใช้คำสั่ง export PS1=$OLD_PS1
ตัวแปร SHELL
ตัวแปร SHELL จะเก็บค่าว่าเราใช้แอพพลิเคชั่นเชลล์ตัวไหน ซึ่งโดยมากจะเป็นแอพพลิเคชั่นแบชโดยค่าที่เก็บในตัวแปรจะเป็นพาธเต็มของแอพพลิเคชั่นคือ /bin/bash
ตัวแปรที่เกี่ยวกับประวัติการใช้คำสั่งในหน้าจอคอนโซล
แอพพลิเคชั่นเชลล์จะเก็บประวัติการใช้คำสั่งของเราไว้ในไฟล์ ~/.bash_history ซึ่งเราสามารถเรียกดูได้โดยการกดปุ่มลูกศรขึ้นหรือลง หรือกดปุ่ม pageupหรือpagedown ขึ้นอยู่กับแต่ละดิสทริบิวชั่น หรือใช้คำสั่ง history เราสามารถใช้คำสั่ง !! เพื่อเรียกใช้งานคำสั่งก่อนหน้าได้ เราสามารถกดปุ่ม Ctrl+r เพื่อค้นหาคำสั่งที่ใช้งานไปก่อนหน้านี้ได้
ภาพแสดงการใช้คำสั่ง history
นอกจากนี้ยังมีตัวแปรที่เกี่ยวข้องกับประวัติการใช้คำสั่ง เช่น $HISTFILE จะเก็บพาธที่เก็บไฟล์ history $HISTFILESIZE จำนวนบรรทัดสูงสุดที่รองรับในไฟล์ history $HISTSIZE จำนวนคำสั่งสูงสุดที่สามารถเก็บได้ในไฟล์ history $HISTCONTROL วิธีการเก็บคำสั่ง $HISTIGNORE คำสั่งไหนบ้างที่สามารถยกเลิกการบันทึกได้ เราสามารถดูรายละเอียดการใช้งาน Environment Variable ได้โดยใช้คำสั่ง man bash
ภาพตัวอย่างการแสดงค่าใน Environment Variable
และเรายังมีคำสั่งที่ช่วยให้เราเรียกใช้งานข้อมูลจาก history เช่น !$ แสดงตัวแปรที่ถูกใช้ในคำสั่งล่าสุด, !n เรียกใช้งานคำสั่งที่ n ใน history และ !string เรียกใช้งานคำสั่งล่าสุดที่ขึ้นต้นด้วยข้อความทีกำหนด ตัวอย่างเช่น
ภาพแสดงข้อมูลใน shell command history
ภาพแสดงการใช้คำสั่งเพื่อใช้ข้อมูลใน history