à¹à¸§à¸à¹à¸²à¸à¸±à¸ à¸à¸à¸±à¸à¸à¸´à¹à¸¨à¸©
สารบัญ:
- ตัวแปรสภาพแวดล้อมและตัวแปรเชลล์
- รายการตัวแปรสภาพแวดล้อม
- การตั้งค่าตัวแปรสภาพแวดล้อม
- ตัวแปรสภาวะแวดล้อมถาวร
- ข้อสรุป
ในตัวแปรสภาพแวดล้อมระบบที่ทำงานบน Linux และ Unix คือชุดของค่าที่ตั้งชื่อแบบไดนามิกซึ่งเก็บไว้ภายในระบบที่ใช้งานโดยแอปพลิเคชันที่เปิดตัวในเชลล์หรือ subshells คำง่ายๆตัวแปรสภาพแวดล้อมเป็นตัวแปรที่มีชื่อและค่าที่เกี่ยวข้อง
ตัวแปรสภาพแวดล้อมช่วยให้คุณสามารถกำหนดวิธีการทำงานของระบบและพฤติกรรมของแอพพลิเคชั่นในระบบ ตัวอย่างเช่นตัวแปรสภาพแวดล้อมสามารถจัดเก็บข้อมูลเกี่ยวกับตัวแก้ไขข้อความหรือเบราว์เซอร์เริ่มต้นเส้นทางไปยังไฟล์ที่เรียกใช้งานได้หรือการตั้งค่าตำแหน่งของระบบและรูปแบบแป้นพิมพ์ของระบบ
ในคู่มือนี้เราจะอธิบายการอ่านและตั้งค่าสภาพแวดล้อมและตัวแปรเชลล์
ตัวแปรสภาพแวดล้อมและตัวแปรเชลล์
ตัวแปรมีรูปแบบต่อไปนี้:
KEY=value KEY="Some other value" KEY=value1:value2
- ชื่อของตัวแปรคำนึงถึงขนาดตัวพิมพ์ ตามแบบแผนตัวแปรสภาพแวดล้อมควรมีชื่อกรณีบนเมื่อกำหนดค่าหลายค่าให้กับตัวแปรพวกเขาจะต้องคั่นด้วยโคลอน
:
ตัวอักษรไม่มีช่องว่างรอบเครื่องหมายเท่ากับ=
ตัวแปรสามารถแบ่งได้เป็นสองประเภทหลักตัวแปรสภาพแวดล้อมและตัวแปรเชลล์
ตัวแปรสภาพแวดล้อม เป็นตัวแปรที่มีอยู่ทั่วทั้งระบบและสืบทอดโดยกระบวนการลูกและเปลือกหอยที่เกิดใหม่ทั้งหมด
ตัวแปร Shell เป็นตัวแปรที่ใช้กับอินสแตนซ์เชลล์ปัจจุบันเท่านั้น แต่ละเชลล์เช่น
zsh
และ
bash
มีชุดตัวแปรเชลล์ภายในของตัวเอง
มีหลายคำสั่งที่ให้คุณแสดงรายการและตั้งค่าตัวแปรสภาพแวดล้อมใน Linux:
-
env
- คำสั่งอนุญาตให้คุณเรียกใช้โปรแกรมอื่นในสภาพแวดล้อมแบบกำหนดเองโดยไม่ต้องแก้ไขโปรแกรมปัจจุบัน เมื่อใช้โดยไม่มีอาร์กิวเมนต์มันจะพิมพ์รายการตัวแปรสภาพแวดล้อมปัจจุบันprintenv
- คำสั่งพิมพ์ตัวแปรสภาพแวดล้อมทั้งหมดหรือที่ระบุset
- คำสั่งตั้งหรือยกเลิกตัวแปรเชลล์ เมื่อใช้โดยไม่มีอาร์กิวเมนต์มันจะพิมพ์รายการตัวแปรทั้งหมดรวมถึงตัวแปรสภาพแวดล้อมและตัวแปรเชลล์และฟังก์ชั่นเชลล์unset
- คำสั่งลบตัวแปรเชลล์และสภาวะแวดล้อมexport
- คำสั่งตั้งค่าตัวแปรสภาพแวดล้อม
รายการตัวแปรสภาพแวดล้อม
คำสั่งที่ใช้มากที่สุดเพื่อแสดงตัวแปรสภาพแวดล้อมคือ
printenv
หากชื่อของตัวแปรถูกส่งผ่านเป็นอาร์กิวเมนต์ไปยังคำสั่งเฉพาะค่าของตัวแปรนั้นจะปรากฏขึ้น หากไม่มีการระบุอาร์กิวเมนต์
printenv
พิมพ์รายการตัวแปรสภาพแวดล้อมทั้งหมดหนึ่งตัวแปรต่อบรรทัด
ตัวอย่างเช่นในการแสดงค่าของตัวแปรสภาพแวดล้อม
HOME
คุณจะเรียกใช้:
printenv HOME
ผลลัพธ์จะพิมพ์เส้นทางของผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน:
/home/linuxize
คุณสามารถส่งอาร์กิวเมนต์มากกว่าหนึ่งอาร์กิวเมนต์ไปยังคำสั่ง
printenv
:
printenv LANG PWD
en_US /home/linuxize
printenv
ผลลัพธ์จะมีลักษณะดังนี้:
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;… LESSCLOSE=/usr/bin/lesspipe %s %s LANG=en_US S_COLORS=auto XDG_SESSION_ID=5 USER=linuxize PWD=/home/linuxize HOME=/home/linuxize SSH_CLIENT=192.168.121.1 34422 22 XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop SSH_TTY=/dev/pts/0 MAIL=/var/mail/linuxize TERM=xterm-256color SHELL=/bin/bash SHLVL=1 LANGUAGE=en_US: LOGNAME=linuxize XDG_RUNTIME_DIR=/run/user/1000 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin LESSOPEN=| /usr/bin/lesspipe %s _=/usr/bin/printenv
ด้านล่างนี้เป็นตัวแปรสภาพแวดล้อมที่พบบ่อยที่สุด:
-
USER
- ผู้ใช้ที่ล็อกอินในปัจจุบันHOME
- โฮมไดเร็กทอรีของผู้ใช้ปัจจุบันEDITOR
- โปรแกรมแก้ไขไฟล์เริ่มต้นที่จะใช้ นี่คือเครื่องมือแก้ไขที่จะใช้เมื่อคุณพิมพ์edit
ในเทอร์มินัลของคุณSHELL
- เส้นทางของเชลล์ผู้ใช้ปัจจุบันเช่น bash หรือ zshLOGNAME
- ชื่อของผู้ใช้ปัจจุบันPATH
- รายการไดเรกทอรีที่จะค้นหาเมื่อดำเนินการคำสั่ง เมื่อคุณเรียกใช้คำสั่งระบบจะค้นหาไดเรกทอรีเหล่านั้นตามลำดับนี้และใช้ไฟล์เรียกทำงานที่พบครั้งแรกLANG
- การตั้งค่าตำแหน่งที่ตั้งปัจจุบันTERM
- การจำลองเทอร์มินัลปัจจุบันMAIL
- ตำแหน่งของที่เก็บจดหมายของผู้ใช้ปัจจุบัน
คำสั่ง
printenv
และ
env
พิมพ์เฉพาะตัวแปรสภาพแวดล้อม หากคุณต้องการรับรายการตัวแปรทั้งหมดรวมถึงสภาพแวดล้อมเชลล์และตัวแปรและฟังก์ชั่นเชลล์คุณสามารถใช้คำสั่ง
set
:
set
BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=()
คำสั่งจะแสดงรายการตัวแปรทั้งหมดจำนวนมากดังนั้นคุณอาจต้องการไพพ์เอาต์พุตไปยังคำสั่ง
less
set | less
คุณยังสามารถใช้คำสั่ง echo เพื่อพิมพ์ตัวแปรเชลล์ ตัวอย่างเช่นหากต้องการพิมพ์ค่าของตัวแปร
BASH_VERSION
คุณต้องเรียกใช้:
echo $BASH_VERSION
การตั้งค่าตัวแปรสภาพแวดล้อม
เพื่อแสดงให้เห็นถึงความแตกต่างระหว่างตัวแปรเชลล์และสภาพแวดล้อมที่ดีขึ้นเราจะเริ่มต้นด้วยการตั้งค่าตัวแปรเชลล์แล้วไปยังตัวแปรสภาพแวดล้อม
ในการสร้างตัวแปรเชลล์ใหม่ด้วยชื่อ
MY_VAR
และค่า
Linuxize
พิมพ์:
MY_VAR='Linuxize'
คุณสามารถตรวจสอบว่าตัวแปรถูกตั้งค่าโดยใช้
echo $MY_VAR
ของการกรองเอาต์พุตของคำสั่ง set ด้วย grep
set | grep MY_VAR
set | grep MY_VAR
:
echo $MY_VAR
Linuxize
ใช้คำสั่ง
printenv
เพื่อตรวจสอบว่าตัวแปรนี้เป็นตัวแปรสภาพแวดล้อมหรือไม่:
printenv MY_VAR
ผลลัพธ์จะว่างเปล่าซึ่งบอกเราว่าตัวแปรนั้นไม่ใช่ตัวแปรสภาพแวดล้อม
คุณสามารถลองพิมพ์ตัวแปรใน sub-shell และคุณจะได้ผลลัพธ์ที่ว่างเปล่า
bash -c 'echo $MY_VAR'
คำสั่ง
export
ใช้เพื่อตั้งค่าตัวแปรสภาพแวดล้อม
ในการสร้างตัวแปรสภาพแวดล้อมเพียงส่งออกตัวแปรเชลล์เป็นตัวแปรสภาพแวดล้อม:
export MY_VAR
คุณสามารถตรวจสอบสิ่งนี้ได้โดยเรียกใช้:
printenv MY_VAR
Linuxize
bash -c 'echo $MY_VAR'
Linuxize
คุณยังสามารถตั้งค่าตัวแปรสภาพแวดล้อมในบรรทัดเดียว:
export MY_NEW_VAR="My New Var"
ตัวแปรสภาพแวดล้อมที่สร้างด้วยวิธีนี้จะใช้ได้เฉพาะในเซสชันปัจจุบัน หากคุณเปิดเชลล์ใหม่หรือหากคุณล็อกเอาต์ตัวแปรทั้งหมดจะหายไป
ตัวแปรสภาวะแวดล้อมถาวร
ในการทำให้ตัวแปรสภาวะแวดล้อมคงอยู่คุณต้องกำหนดตัวแปรเหล่านั้นในไฟล์กำหนดค่า bash ใน Linux ดิสทริบิวชันส่วนใหญ่เมื่อคุณเริ่มเซสชันใหม่ตัวแปรสภาวะแวดล้อมจะถูกอ่านจากไฟล์ต่อไปนี้:
-
/etc/environment
- ใช้ไฟล์นี้เพื่อตั้งค่าตัวแปรสภาพแวดล้อมทั่วทั้งระบบ ตัวแปรในไฟล์นี้ถูกตั้งค่าในรูปแบบต่อไปนี้:FOO=bar
VAR_TEST="Test Var"
/etc/profile
- ตัวแปรที่ตั้งค่าในไฟล์นี้จะถูกโหลดทุกครั้งที่มีการป้อน bash login shell เมื่อประกาศตัวแปรสภาพแวดล้อมในไฟล์นี้คุณต้องใช้คำสั่งexport
:export JAVA_HOME="/path/to/java/home"
export PATH=$PATH:$JAVA_HOME/bin
ไฟล์คอนฟิกูเรชันเฉพาะเชลล์สำหรับแต่ละผู้ใช้ ตัวอย่างเช่นหากคุณใช้ Bash คุณสามารถประกาศตัวแปรใน
~/.bashrc
:export PATH="$HOME/bin:$PATH"
ในการโหลดตัวแปรสภาพแวดล้อมใหม่ลงในเซสชันเชลล์ปัจจุบันให้ใช้คำสั่ง
source
:
ข้อสรุป
ในคู่มือนี้เราได้แสดงวิธีการตั้งค่าและรายการสภาพแวดล้อมและตัวแปรเชลล์
อย่าลังเลที่จะแสดงความคิดเห็นหากคุณมีคำถามใด ๆ
สถานีปลายทางLinux Foundation กำลังพยายามที่จะทำให้ผู้ใช้ขั้นปลายของ Linux "end-end" มีส่วนร่วมมากขึ้นในการพัฒนาเคอร์เนล

Linux Foundation กำลังเตรียมงาน Summit User Summit ครั้งแรกในกรุง New York ในวันจันทร์ที่ผ่านมาเพื่อพยายามให้นักพัฒนาเคอร์เนล Linux ได้ติดต่อกับผู้ใช้ที่สถาบันวอลล์สตรีทและ บริษัท ใหญ่อื่น ๆ
Canonical อาจไม่ได้เผยแพร่การเปิดตัวอัลฟาอย่างเป็นทางการสำหรับเมนบอร์ด Ubuntu Linux 13.04 OS เมื่อสัปดาห์ที่แล้วหรือเป็นรายการคุณลักษณะใหม่ ๆ ที่เกี่ยวข้อง แต่เมื่อวันศุกร์ที่ผ่านมา บริษัท ได้เปิดเผยรายละเอียดบางอย่างเกี่ยวกับสิ่งที่จะเกิดขึ้นในเวอร์ชันถัดไปนี้ Linux

ในความเป็นจริง Cristian Parrino รองประธานฝ่ายบริการออนไลน์ของ Canonical ได้กล่าวถึงคุณลักษณะใหม่ ๆ สามอย่างในโพสต์ในบล็อก Canonical
ด้วยการกระจาย Linux ที่ยอดเยี่ยมในปัจจุบันนี้คุณสามารถมุ่งเน้นเฉพาะบางส่วนที่ครองพาดหัวข่าวเช่น Ubuntu Linux, Linux Mint, Fedora และ Mageia ลินุกซ์เพื่อชื่อเพียงไม่กี่

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