Android

วิธีการตั้งค่าและรายการตัวแปรสภาพแวดล้อมใน linux

เวก้าผับ ฉบับพิเศษ

เวก้าผับ ฉบับพิเศษ

สารบัญ:

Anonim

ในตัวแปรสภาพแวดล้อมระบบที่ทำงานบน 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 หรือ zsh LOGNAME - ชื่อของผู้ใช้ปัจจุบัน 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

4.4.19(1)-release

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

เพื่อแสดงให้เห็นถึงความแตกต่างระหว่างตัวแปรเชลล์และสภาพแวดล้อมที่ดีขึ้นเราจะเริ่มต้นด้วยการตั้งค่าตัวแปรเชลล์แล้วไปยังตัวแปรสภาพแวดล้อม

ในการสร้างตัวแปรเชลล์ใหม่ด้วยชื่อ 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 :

source ~/.bashrc

ข้อสรุป

ในคู่มือนี้เราได้แสดงวิธีการตั้งค่าและรายการสภาพแวดล้อมและตัวแปรเชลล์

อย่าลังเลที่จะแสดงความคิดเห็นหากคุณมีคำถามใด ๆ

สถานีปลายทาง