ส่วนของเว็บไซต์
ตัวเลือกของบรรณาธิการ:
- คะแนนและรีวิวของ ลำโพงบลูทูธ JBL Flip3
- รูปแบบหนังสือ
- การเชื่อมต่อและตั้งค่าทีวีแบบโต้ตอบจาก Rostelecom
- วิธีลบบัญชี Instagram ของคุณ
- แท็บเล็ต Android หรือ iPad - จะเลือกอะไรดี?
- วิธีจัดรูปแบบความต่อเนื่องของตารางใน Word อย่างถูกต้อง
- จะทำอย่างไรถ้าคุณพัฒนาแบบออฟไลน์
- การทดสอบโปรเซสเซอร์ว่ามีความร้อนสูงเกินไป
- บริการสาธารณะของ Yesia คืออะไร
- ตำแหน่งของหัวบนเสาอากาศ
การโฆษณา
Linux ตัวแปรสภาพแวดล้อมทั้งหมดของกระบวนการที่ทำงานอยู่ เอ็ม. การ์เรลส์ |
ต้นฉบับ: พื้นฐาน Linux บทที่ 12 ตัวแปรเชลล์ในบทนี้ เราจะได้เรียนรู้วิธีทำงานกับตัวแปรสภาพแวดล้อมโดยใช้เชลล์คำสั่ง โดยทั่วไปแล้วตัวแปรเหล่านี้จำเป็นสำหรับแอปพลิเคชันในการทำงาน สัญลักษณ์ดอลลาร์ ($)สัญลักษณ์สำคัญอีกประการหนึ่งที่เชลล์ตีความคือสัญลักษณ์ดอลลาร์ $ เชลล์คำสั่งจะค้นหาตัวแปรสภาพแวดล้อมที่มีชื่อที่สอดคล้องกับบรรทัดหลังเครื่องหมายดอลลาร์ และแทนที่สัญลักษณ์นั้นและชื่อตัวแปรด้วยค่าของตัวแปรนั้น (หรือไม่มีค่าเลยหากไม่มีตัวแปร) ด้านล่างนี้เป็นตัวอย่างบางส่วนของการใช้ตัวแปร $HOSTNAME, $USER, $UID, $SHELL และ $HOME $ echo นี่คือเชลล์ $SHELL นี่คือ /bin/bash shell $ echo นี่คือ $SHELL เชลล์ที่ใช้บนคอมพิวเตอร์ $HOSTNAME นี่คือ /bin/bash เชลล์ที่ใช้บนคอมพิวเตอร์ RHELv4u3.localdomain $ echo ID ผู้ใช้ $USER เท่ากับ $UID ID ผู้ใช้ paul เท่ากับ $500 echo โฮมไดเร็กตอรี่ของฉันคือ $HOME โฮมไดเร็กตอรี่ของฉันคือ /home/paulความละเอียดอ่อนของตัวพิมพ์ ตัวอย่างนี้แสดงให้เห็นว่าชื่อตัวแปรเชลล์คำนึงถึงขนาดตัวพิมพ์!$ echo สวัสดี $USER สวัสดีพอล $ echo สวัสดี $user สวัสดี การสร้างตัวแปรโปรดทราบว่าเครื่องหมายคำพูดคู่ยังอนุญาตให้มีการขยายตัวแปรในบรรทัดคำสั่ง ในขณะที่เครื่องหมายคำพูดเดี่ยวจะป้องกันการขยายดังกล่าว $ MyVar=555 $ echo $MyVar 555 $ echo "$MyVar" 555 $ echo "$MyVar" $MyVar bash shell จะแทนที่ตัวแปรด้วยค่าของมันในบรรทัดที่มีเครื่องหมายคำพูดคู่ แต่จะไม่ทำเช่นนั้นในบรรทัดที่มีเครื่องหมายคำพูดเดี่ยวpaul@laika:~$ city=Burtonville paul@laika:~$ echo "ตอนนี้เราอยู่ใน $city" ตอนนี้เราอยู่ในเมืองเบอร์ตันวิลล์ paul@laika:~$ echo "ตอนนี้เราอยู่ใน $city" ตอนนี้เราอยู่ใน $city ตั้งค่าคำสั่งคุณสามารถใช้คำสั่ง set เพื่อแสดงรายการตัวแปรสภาพแวดล้อม ใน ระบบอูบุนตูและคำสั่ง Debian set จะแสดงรายการฟังก์ชันเชลล์หลังรายการตัวแปรเชลล์ด้วย ดังนั้นเพื่อทำความคุ้นเคยกับองค์ประกอบทั้งหมดของรายการตัวแปรสภาพแวดล้อมเมื่อทำงานกับระบบเหล่านี้ ขอแนะนำให้ใช้ชุด | มากกว่า. คำสั่งยกเลิกการตั้งค่าคุณควรใช้คำสั่ง unset เพื่อลบตัวแปรออกจากสภาพแวดล้อมเชลล์ของคุณ $ MyVar=8472 $ echo $MyVar 8472 $ ไม่ได้ตั้งค่า MyVar $ echo $MyVar $ตัวแปรสภาพแวดล้อม $PS1 ตัวแปรสภาพแวดล้อม $PS1 กำหนดรูปแบบคำทักทายสำหรับเชลล์ของคุณ เมื่อป้อนสตริงรูปแบบ คุณสามารถใช้แบ็กสแลชเพื่อหลีกอักขระพิเศษ เช่น \u สำหรับชื่อผู้ใช้ หรือ \w สำหรับไดเร็กทอรีการทำงาน หน้า man ของ bash shell จัดเตรียมไว้ รายการทั้งหมด อักขระพิเศษในตัวอย่างด้านล่าง เราเปลี่ยนค่าของตัวแปรสภาพแวดล้อม $PS1 หลายครั้ง ตัวแปรสภาพแวดล้อม $PATHตัวแปรสภาพแวดล้อม $PATH ตั้งค่าไดเร็กทอรี ระบบไฟล์ซึ่งเชลล์ค้นหาไฟล์ไบนารีที่จำเป็นในการรันคำสั่ง (เว้นแต่คำสั่งนั้นเป็นบิวด์อินหรือแสดงโดยนามแฝงคำสั่ง) ตัวแปรนี้มีรายการเส้นทางไดเร็กทอรีที่คั่นด้วยอักขระโคลอน [$ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin: เชลล์คำสั่งจะไม่ค้นหาไดเร็กทอรีปัจจุบันเพื่อหาไบนารีที่ปฏิบัติการได้ (ฟังก์ชันการค้นหาไฟล์ปฏิบัติการในไดเร็กทอรีปัจจุบันเป็นกลไกที่ง่ายที่สุดสำหรับการเข้าถึงข้อมูลที่จัดเก็บไว้ในคอมพิวเตอร์ที่ใช้ PC-DOS โดยไม่ได้รับอนุญาต) หากคุณต้องการให้เชลล์คำสั่งค้นหาไฟล์ปฏิบัติการในไดเร็กทอรีปัจจุบัน คุณควรเพิ่มสัญลักษณ์ ที่ท้ายบรรทัดซึ่งเป็นค่าของตัวแปร $PATH ของเชลล์ของคุณ $พาธ=$พาธ:. $ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:. -ค่าของตัวแปร $PATH ของเชลล์ของคุณอาจแตกต่างกันหากคุณใช้คำสั่ง su แทนคำสั่ง su - เนื่องจากคำสั่งหลังอนุญาตให้ใช้ค่าตัวแปรสภาพแวดล้อมของผู้ใช้เป้าหมายเพิ่มเติมได้ ตัวอย่างเช่น รายการไดเร็กทอรีสำหรับผู้ใช้รูท ซึ่งแสดงด้วยค่าของตัวแปร $PATH โดยปกติจะรวมไดเร็กทอรี /sbin ด้วย รหัสผ่าน $ su: # echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin # exit $ su - รหัสผ่าน: # echo $PATH /usr/local/sbin:/usr/ ท้องถิ่น/bin:/sbin:/bin:/usr/sbin:/usr/bin: # คำสั่ง env คำสั่ง env เมื่อใช้โดยไม่มีพารามิเตอร์ จะแสดงรายการตัวแปรสภาพแวดล้อมที่ส่งออก ความแตกต่างระหว่างคำสั่งนี้และคำสั่ง set พร้อมพารามิเตอร์คือ คำสั่ง set แสดงรายการตัวแปรสภาพแวดล้อมทั้งหมด รวมถึงตัวแปรเหล่านั้นที่ไม่ได้เอ็กซ์พอร์ตไปยังเชลล์ลูกนอกจากนี้ คำสั่ง env ยังสามารถใช้เพื่อเรียกใช้เชลล์ "บริสุทธิ์" (เชลล์ที่ไม่มีการสืบทอดสภาพแวดล้อมใดๆ ) คำสั่ง env -i อนุญาตให้คุณล้างสภาพแวดล้อมของเชลล์ลูก คุณสามารถใช้คำสั่ง env เพื่อตั้งค่าของตัวแปร $LANG หรือตัวแปรสภาพแวดล้อมอื่นๆ ของอินสแตนซ์ bash shell เดียวภายในคำสั่งเดียว ในตัวอย่างด้านล่าง โอกาสนี้ใช้เพื่อแสดงอิทธิพลของค่าของตัวแปร $LANG ต่อการทำงานของกลไกการค้นหารูปแบบไฟล์ (เพื่อให้ได้ ข้อมูลเพิ่มเติมโอ กลไกนี้คุณควรอ้างอิงถึงบทเกี่ยวกับการค้นหาไฟล์โดยใช้รูปแบบ) $ env LANG=C ทุบตี -c "ไฟล์ ls" Filea Fileb $ env LANG=en_US.UTF-8 ทุบตี -c "ไฟล์ ls" Filea FileA Fileb FileB $คำสั่งส่งออก คุณสามารถส่งออกตัวแปรเชลล์ไปยังเชลล์อื่นได้โดยใช้คำสั่งส่งออก ในตัวอย่างด้านล่าง คำสั่งนี้จะส่งออกตัวแปรสภาพแวดล้อมไปยังเชลล์ย่อย $ var3=สาม $ var4=สี่ $ ส่งออก var4 $ echo $var3 $var4 สามสี่ $ ทุบตี $ echo $var3 $var4 สี่อย่างไรก็ตาม เมื่อใช้คำสั่งนี้ ตัวแปรจะไม่ถูกส่งออกไปยังเชลล์คำสั่งพาเรนต์ (ตัวอย่างก่อนหน้านี้มีต่อด้านล่าง) $ ส่งออก var5=ห้า $ echo $var3 $var4 $var5 สี่ห้า $ ออก ทางออก $ echo $var3 $var4 $var5 สามสี่ $การจำกัดตัวแปร จนถึงขณะนี้ เราได้เห็นแล้วว่า bash shell ตีความตัวแปรที่เริ่มต้นด้วยเครื่องหมายดอลลาร์ และดำเนินต่อไปจนกระทั่งอักขระตัวแรกที่ไม่ใช่ตัวอักษรและตัวเลขซึ่งไม่ใช่ขีดล่างปรากฏขึ้น ในบางสถานการณ์ลักษณะการทำงานนี้อาจเป็นปัญหาได้ เพื่อแก้ปัญหานี้ สามารถใช้วงเล็บปีกกาได้ในลักษณะดังแสดงในตัวอย่างด้านล่าง $ prefix=Super $ echo สวัสดี $prefixman และ $prefixgirl สวัสดี และ $ echo สวัสดี $(คำนำหน้า)man และ $(prefix)girl สวัสดี Superman และ Supergirl $ แบบฝึกหัด: ตัวแปรเชลล์2. สร้างคำตอบแบบแปรผันที่มีค่าเท่ากับ 42 3. คัดลอกค่าของตัวแปร $LANG ไปยังค่าของตัวแปร $MyLANG 4. แสดงรายการตัวแปรเชลล์ที่ใช้งานอยู่ในปัจจุบัน 5. แสดงรายการตัวแปรเชลล์ที่ส่งออกทั้งหมด 6. มีข้อมูลเกี่ยวกับตัวแปรของคุณอยู่ในเอาต์พุตของคำสั่ง env และ set หรือไม่? 7. ทำลายตัวแปรคำตอบของคุณ 8. สร้างตัวแปรสองตัวและส่งออกตัวแปรตัวใดตัวหนึ่ง 9. พิมพ์ค่าของตัวแปรที่ส่งออกในเชลล์คำสั่งแบบโต้ตอบลูก 10. สร้างตัวแปรและกำหนดค่า "Dumb" ให้กับตัวแปร จากนั้นสร้างตัวแปรอื่นที่มีค่า "do" ในลักษณะเดียวกัน ใช้คำสั่ง echo และตัวแปรทั้งสองที่สร้างขึ้นเพื่อพิมพ์คำว่า "Dumbledore" 11. ค้นหารายการอักขระควบคุมที่ใช้ Escape แบ็กสแลชในหน้า man ของ bash shell เพิ่มอักขระควบคุมให้กับตัวแปร PS1 เพื่อแสดงเวลาในคำทักทายของเชลล์ ขั้นตอนการปฏิบัติที่ถูกต้อง: ตัวแปรเชลล์1. ใช้คำสั่ง echo เพื่อพิมพ์สตริง "Hello" ตามด้วยชื่อของคุณ (ใช้ตัวแปร bash shell!) ตัวแปรสภาพแวดล้อมใน Linux เป็นตัวแปรพิเศษที่กำหนดโดยเชลล์และใช้โดยโปรแกรมขณะรันไทม์ สามารถกำหนดได้โดยระบบและผู้ใช้ ระบบ ตัวแปรสภาพแวดล้อมระบบ Linux ถูกกำหนดโดยระบบและใช้โดยโปรแกรมระดับระบบ ตัวอย่างเช่น คำสั่ง PWD ใช้ตัวแปรระบบเพื่อเก็บไดเร็กทอรีการทำงานก่อนหน้า ตัวแปรสภาพแวดล้อมผู้ใช้ถูกกำหนดโดยผู้ใช้ สำหรับเชลล์ปัจจุบัน ไม่ว่าจะชั่วคราวหรือถาวร แนวคิดทั้งหมดของการเพิ่มและการลบตัวแปรเชลล์เกี่ยวข้องกับหลายไฟล์ คำสั่ง และเชลล์ที่แตกต่างกัน โดยทั่วไปแล้ว ตัวแปรสภาพแวดล้อมสามารถมีได้สามประเภท: 1. ตัวแปรสภาพแวดล้อมท้องถิ่นตัวแปรเหล่านี้ถูกกำหนดไว้สำหรับเซสชันปัจจุบันเท่านั้น พวกเขาจะถูกลบอย่างถาวรหลังจากสิ้นสุดเซสชั่นไม่ว่าจะเป็น การเข้าถึงระยะไกลหรือเทอร์มินัลอีมูเลเตอร์ พวกเขาไม่ได้จัดเก็บไว้ในไฟล์ใด ๆ แต่ถูกสร้างและลบโดยใช้คำสั่งพิเศษ 2. ตัวแปรเชลล์แบบกำหนดเองตัวแปรเชลล์เหล่านี้ใน Linux ถูกกำหนดไว้สำหรับผู้ใช้เฉพาะ และจะถูกโหลดทุกครั้งที่ผู้ใช้เข้าสู่ระบบโดยใช้เทอร์มินัลท้องถิ่นหรือเชื่อมต่อจากระยะไกล โดยทั่วไปตัวแปรดังกล่าวจะถูกจัดเก็บไว้ในไฟล์การกำหนดค่า: .bashrc, .bash_profile, .bash_login, .profile หรือไฟล์อื่น ๆ ที่อยู่ในไดเร็กทอรีผู้ใช้ 3. ตัวแปรสภาพแวดล้อมของระบบตัวแปรเหล่านี้มีอยู่ทั่วทั้งระบบสำหรับผู้ใช้ทุกคน มีการโหลดเมื่อเริ่มต้นระบบจาก ไฟล์ระบบการกำหนดค่า: /etc/environment, /etc/profile, /etc/profile.d/ /etc/bash.bashrc ไฟล์การกำหนดค่าตัวแปรสภาพแวดล้อม Linuxเราจะมาดูเรื่องต่างๆ กันแบบสั้นๆ กัน ไฟล์การกำหนดค่าที่ระบุไว้ข้างต้น ซึ่งใช้ในการตั้งค่าตัวแปรสภาพแวดล้อมสำหรับทั้งระบบหรือผู้ใช้เฉพาะ .bashrcนี่คือไฟล์ตัวแปรเฉพาะผู้ใช้ โหลดทุกครั้งที่ผู้ใช้สร้างเซสชันเทอร์มินัล กล่าวคือ เปิดเทอร์มินัลใหม่ ตัวแปรสภาพแวดล้อมทั้งหมดที่สร้างในไฟล์นี้จะมีผลทุกครั้งที่เริ่มเซสชันเทอร์มินัลใหม่ .bash_profileตัวแปรเหล่านี้จะมีผลทุกครั้งที่ผู้ใช้เชื่อมต่อระยะไกลผ่าน SSH หากไฟล์นี้หายไป ระบบจะค้นหา .bash_login หรือ .profile /etc/สภาพแวดล้อมไฟล์นี้ใช้สำหรับสร้าง แก้ไข และลบตัวแปรสภาพแวดล้อมในระดับระบบ ตัวแปรสภาพแวดล้อมที่สร้างในไฟล์นี้จะพร้อมใช้งานสำหรับทั้งระบบ สำหรับผู้ใช้แต่ละราย และแม้กระทั่งเมื่อเชื่อมต่อจากระยะไกล /etc/bash.bashrcระบบ bashrc ไฟล์นี้จะถูกดำเนินการสำหรับผู้ใช้แต่ละราย ทุกครั้งที่เขาสร้างเซสชันเทอร์มินัลใหม่ ใช้งานได้กับผู้ใช้ภายในเครื่องเท่านั้น เมื่อเชื่อมต่อผ่านอินเทอร์เน็ต ตัวแปรดังกล่าวจะไม่ปรากฏให้เห็น /etc/profileโปรไฟล์ไฟล์ระบบ ตัวแปรทั้งหมดจากไฟล์นี้จะพร้อมใช้งานสำหรับผู้ใช้ทุกคนในระบบเฉพาะในกรณีที่เขาเข้าสู่ระบบจากระยะไกล แต่จะไม่สามารถใช้งานได้เมื่อสร้างเซสชันเทอร์มินัลในเครื่อง กล่าวคือ หากคุณเพียงแค่เปิดเทอร์มินัล ตัวแปรสภาพแวดล้อม Linux ทั้งหมดที่สร้างขึ้นโดยใช้ไฟล์เหล่านี้สามารถลบออกได้ง่ายๆ ด้วยการลบออกจากที่นั่น หลังจากการเปลี่ยนแปลงแต่ละครั้งเท่านั้น คุณจะต้องออกจากระบบและกลับเข้าสู่ระบบใหม่ หรือเรียกใช้คำสั่งนี้: ชื่อไฟล์ต้นฉบับ การเพิ่มตัวแปรผู้ใช้และสภาพแวดล้อมระบบใน Linuxตอนนี้คุณรู้ทฤษฎีเพียงเล็กน้อยแล้ว เรามาฝึกฝนกันต่อ ตัวแปรสภาพแวดล้อมท้องถิ่นใน Linux สามารถสร้างได้ด้วยคำสั่งต่อไปนี้: var=ค่า ตัวแปรเหล่านี้จะพร้อมใช้งานสำหรับเซสชันเทอร์มินัลปัจจุบันเท่านั้น มีคำสั่งหลายคำสั่งที่คุณสามารถใช้เพื่อลบตัวแปรสภาพแวดล้อม: 1. การใช้สภาพแวดล้อมตามค่าเริ่มต้น คุณสามารถใช้ env เพื่อดูตัวแปรสภาพแวดล้อมที่ตั้งค่าไว้ทั้งหมดได้ แต่ด้วยตัวเลือก -i จะทำให้คุณสามารถลบตัวแปรเชลล์ทั้งหมดชั่วคราวและดำเนินการคำสั่งโดยไม่มีตัวแปร คำสั่ง env –i Var คือตัวแปรใดๆ ที่คุณต้องการส่งผ่านไปยังคำสั่งนี้ คำสั่งนี้จะสตาร์ทเชลล์โดยไม่มีตัวแปรสภาพแวดล้อมใดๆ เลย: หลังจากเปิดตัวสภาพแวดล้อมดังกล่าวแล้ว จะไม่มีตัวแปรให้ใช้งาน แต่หลังจากออกแล้ว ทุกอย่างจะกลับสู่ตำแหน่งเดิม 2. การใช้การไม่ตั้งค่านี่เป็นอีกวิธีหนึ่งในการลบตัวแปรสภาพแวดล้อม Linux Unset จะลบตัวแปรตามชื่อจนกระทั่งสิ้นสุดเซสชันปัจจุบัน: ยกเลิกการตั้งค่า Variable_name 3. ตั้งค่าตัวแปรเป็น ""นี่เป็นวิธีที่ง่ายที่สุดในการลบตัวแปรสภาพแวดล้อมใน Linux โดยการตั้งค่าตัวแปรให้ว่าง คุณจะลบตัวแปรดังกล่าวในช่วงที่เหลือของเซสชันปัจจุบัน หมายเหตุ: เมื่อใช้วิธีการเหล่านี้ คุณสามารถเปลี่ยนค่าของระบบหรือตัวแปรผู้ใช้ได้ แต่จะเกี่ยวข้องเท่านั้น เซสชันปัจจุบัน. การสร้างตัวแปรสภาพแวดล้อมของผู้ใช้และระบบในส่วนนี้ เราจะดูวิธีตั้งค่าและลบตัวแปรระบบและผู้ใช้ ไม่เพียงแต่สำหรับเซสชันปัจจุบันเท่านั้น แต่ยังเพื่อให้ผลกระทบยังคงอยู่หลังจากการรีบูต 1. ตั้งค่าและลบตัวแปรโลคัลใน Linuxมาสร้างตัวแปรท้องถิ่น VAR และตั้งค่าเป็นค่าใดก็ได้ จากนั้นยกเลิกการตั้งค่าและตรวจสอบให้แน่ใจว่าได้ลบแล้ว: VAR1="แพ้" อีกวิธีหนึ่งในการสร้างตัวแปรคือใช้คำสั่งส่งออก มาลบมันโดยกำหนดค่าว่าง: ส่งออก VAR = "ขาดทุน" ตอนนี้เรามาสร้างตัวแปร VAR2 และตั้งค่าของมันกันดีกว่า จากนั้นลบตัวแปรโลคอลทั้งหมดชั่วคราวโดยรัน env -i มันจะเริ่มต้นเชลล์โดยไม่มีตัวแปรใดๆ หลังจากเข้าสู่ทางออกแล้ว ตัวแปรทั้งหมดจะถูกกู้คืน VAR2="แพ้" การตั้งค่าและการลบตัวแปรผู้ใช้แก้ไขไฟล์ .bashrc ในโฮมไดเร็กตอรี่ของคุณโดยเพิ่มคำสั่งส่งออกเพื่อส่งออกตัวแปรที่ต้องการ จากนั้นรันคำสั่ง source เพื่อใช้การเปลี่ยนแปลง ตัวอย่างเช่น มาสร้างตัวแปร CD: เพิ่มบรรทัดนี้ (o จากนั้นวาง จากนั้น Esc และ :wq): ส่งออก CD = "นี่คือบ้านที่หายไป" ตอนนี้ยังคงอัปเดตการกำหนดค่า: แหล่งที่มา.bashrc หากต้องการลบตัวแปรนี้ เพียงลบออกจาก .bashrc ตอนนี้เรามาเพิ่มตัวแปรสภาพแวดล้อมโดยใช้ .bash_profile ดังที่คุณทราบแล้วตัวแปรนี้จะใช้ได้เฉพาะในระหว่างการเข้าสู่ระบบระยะไกลเท่านั้น: vi .bash_profile เพิ่มบรรทัด: ส่งออก VAR2="นี่คือบ้านที่หายไป" และรันคำสั่งเหล่านี้เพื่อใช้การเปลี่ยนแปลงและตรวจสอบว่ามีการเพิ่มตัวแปรแล้ว: แหล่งที่มา.bash_profile ตัวแปรไม่พร้อมใช้งานเนื่องจากคุณได้สร้างเซสชันเทอร์มินัลในเครื่องแล้ว ตอนนี้เชื่อมต่อผ่าน ssh: ผู้ใช้ ssh@localhost คุณสามารถลบตัวแปรสภาพแวดล้อมนี้ได้ในลักษณะเดียวกับในกรณีก่อนหน้าโดยการลบออกจากไฟล์ ความคิดเห็น: ตัวแปรเหล่านี้พร้อมใช้งานเสมอ แต่ไม่ใช่สำหรับผู้ใช้ทุกคน การตั้งค่าและการลบตัวแปรสภาพแวดล้อมของระบบมาสร้างตัวแปรที่ผู้ใช้ทุกคนสามารถใช้ได้ เซสชันเทอร์มินัลยกเว้นอันที่ถูกลบโดยเพิ่มไปที่ /etc/bash.profile: vi /etc/bash.profile ส่งออก VAR = "นี่คือตัวแปรทั้งระบบ" จากนั้นเราอัปเดต: แหล่งที่มา /etc/bash.bashrc ตอนนี้ตัวแปรนี้พร้อมใช้งานสำหรับผู้ใช้ทุกคน ในทุกเทอร์มินัล: สะท้อน $VAR หากคุณต้องการให้ตัวแปรสภาพแวดล้อมพร้อมใช้งานสำหรับผู้ใช้ทั้งหมดที่เชื่อมต่อกับเครื่องนี้แบบรีโมต ให้แก้ไขไฟล์ /etc/profile: ส่งออก VAR1="นี่คือตัวแปรทั้งระบบสำหรับเซสชันระยะไกลเท่านั้น" อัปเดตการกำหนดค่าและตรวจสอบความพร้อมใช้งานของตัวแปร โดยจะพร้อมใช้งานจากระยะไกลเท่านั้น: แหล่งที่มา /etc/profile หากคุณต้องการเพิ่มตัวแปรสภาพแวดล้อมใน Linux เพื่อให้สามารถเข้าถึงได้ทั้งจากระยะไกลและสำหรับเซสชันในเครื่อง ให้ส่งออกไปที่ /etc/environment: vi /etc/environment.vi ส่งออก VAR12="ฉันพร้อมให้บริการทุกที่" เราตรวจสอบ: แหล่งที่มา /etc/environment แนวคิดของพารามิเตอร์ในเชลล์ ทุบตีคล้ายกับแนวคิดของตัวแปรในภาษาโปรแกรมทั่วไป ชื่อพารามิเตอร์ (หรือตัวระบุ) สามารถเป็นคำที่ประกอบด้วยอักขระตัวอักษร ตัวเลข และขีดล่าง (เฉพาะอักขระตัวแรกของคำเท่านั้นที่ไม่สามารถเป็นตัวเลขได้) ตัวเลข หรืออักขระพิเศษตัวใดตัวหนึ่งต่อไปนี้: * , @ , # , ? , - (ยัติภังค์), $ , ! , 0 , _ (ขีดเส้นใต้). พารามิเตอร์ถูกกล่าวว่าถูกตั้งค่าหรือตั้งค่าหากมีการกำหนดค่าให้กับพารามิเตอร์นั้น ค่านี้อาจเป็นสตริงว่างก็ได้ ในการแสดงค่าของพารามิเตอร์ ให้ใช้สัญลักษณ์ $ ก่อนชื่อของเขา ใช่ครับ ทีม $ ชื่อสะท้อน จะแสดงคำบนหน้าจอ ชื่อและทีมงาน $ เสียงสะท้อน $ ชื่อ จะส่งกลับค่าของตัวแปรชื่อ (ถ้ามีการตั้งค่าไว้แน่นอน) 5.6.1 พารามิเตอร์ที่หลากหลายพารามิเตอร์แบ่งออกเป็นสามคลาส: พารามิเตอร์ตำแหน่ง พารามิเตอร์พิเศษ(ชื่อที่เป็นอักขระพิเศษที่เพิ่งระบุไว้) และ ตัวแปรเชลล์. ชื่อ (ตัวระบุ) พารามิเตอร์ตำแหน่งประกอบด้วยตัวเลขหนึ่งหลักขึ้นไป (ไม่ใช่ศูนย์ตัวเดียว) ค่าพารามิเตอร์ตำแหน่งคืออาร์กิวเมนต์ที่ได้รับเมื่อเชลล์เริ่มทำงาน (อาร์กิวเมนต์แรกคือค่าของพารามิเตอร์ตำแหน่ง 1 เป็นต้น) คุณสามารถเปลี่ยนค่าของพารามิเตอร์ตำแหน่งได้โดยใช้คำสั่งในตัว ชุด- ค่าของพารามิเตอร์เหล่านี้ยังเปลี่ยนแปลงในขณะที่เชลล์กำลังดำเนินการฟังก์ชันใดฟังก์ชันหนึ่ง (ซึ่งจะกล่าวถึงด้านล่างใน ส่วน 5.8). พารามิเตอร์พิเศษเป็นรูปแบบการทดแทน (ทดแทน) โดยมีการดำเนินการดังนี้ ตารางที่ 5.2.พารามิเตอร์พิเศษ
พารามิเตอร์พิเศษที่แสดงอยู่ในตารางด้านบนแตกต่างกันตรงที่สามารถอ้างอิงได้เท่านั้น คุณไม่สามารถกำหนดค่าให้กับพวกเขาได้ ตัวแปรจากมุมมองของเชลล์ มันเป็นพารามิเตอร์ที่แสดงด้วยชื่อ ค่าถูกกำหนดให้กับตัวแปรโดยใช้ตัวดำเนินการต่อไปนี้: $ชื่อ=มูลค่า ที่ไหน ชื่อคือชื่อของตัวแปร และ ค่า— ค่าที่กำหนดให้กับมัน (อาจเป็นสตริงว่าง) ชื่อตัวแปรประกอบด้วยตัวเลขและตัวอักษรเท่านั้น และไม่สามารถขึ้นต้นด้วยตัวเลขได้ ค่าสามารถเป็นข้อความใดก็ได้ หากค่ามีอักขระพิเศษ จะต้องอยู่ในเครื่องหมายคำพูด ค่าที่กำหนดไม่มีเครื่องหมายคำพูดเหล่านี้แน่นอน หากตั้งค่าตัวแปรไว้ ก็สามารถลบออกได้โดยใช้คำสั่งเชลล์บิวด์อิน ไม่ได้ตั้งค่า. ชุดของตัวแปรเชลล์ที่ตั้งค่าทั้งหมดที่มีค่าที่กำหนดเรียกว่าสภาพแวดล้อมหรือสภาพแวดล้อมของเชลล์ คุณสามารถดูได้โดยใช้คำสั่ง ชุดไม่มีพารามิเตอร์ (บางทีคุณควรจัดระเบียบไปป์ไลน์ "ตั้ง | น้อยลง"- ผลลัพธ์ของคำสั่งนี้จะแสดงรายการตัวแปรสภาพแวดล้อมทั้งหมดตามลำดับตัวอักษร หากต้องการดูค่าของตัวแปรเฉพาะตัวใดตัวหนึ่ง คุณสามารถทำได้แทนคำสั่ง ชุด(ในผลลัพธ์ที่คุณยังสามารถค้นหาและค้นหาตัวแปรที่ต้องการได้) คุณสามารถใช้คำสั่งได้ $ เสียงสะท้อน $ ชื่อ (แต่ในกรณีนี้คุณต้องทราบชื่อของตัวแปรที่คุณสนใจ) ในบรรดาตัวแปรที่คุณจะเห็นในเอาต์พุตคำสั่งได้แก่ ชุดมีตัวแปรที่น่าสนใจอยู่บ้าง ตัวอย่างเช่น ให้ความสนใจกับตัวแปร RANDOM หากคุณรันคำสั่งหลายครั้งติดต่อกัน $ เสียงสะท้อน $ สุ่ม คุณจะได้รับค่าใหม่ทุกครั้ง ความจริงก็คือตัวแปรนี้ส่งคืนจำนวนเต็มแบบสุ่มจากช่วง 0 - 32,768 5.6.2 เชลล์พร้อมท์มีชื่อตัวแปรที่สำคัญมากตัวหนึ่ง PS1- ตัวแปรนี้ระบุประเภทของคำเชิญนั้น ทุบตีเอาต์พุตเมื่อกำลังรอให้ผู้ใช้ป้อนคำสั่งถัดไป ตามค่าเริ่มต้น ตัวแปรนี้จะถูกตั้งค่าเป็น "\s-\v\$ " จริงๆ แล้วอิน. ทุบตีมีคำเชิญสี่รายการที่ใช้ในสถานการณ์ที่แตกต่างกัน ตัวแปร PS1ระบุประเภทของพร้อมต์ที่ออกเมื่อเชลล์กำลังรอคำสั่งที่จะป้อน พรอมต์รองที่ระบุโดยตัวแปร พีเอส2ปรากฏขึ้นเมื่อเชลล์กำลังรอให้ผู้ใช้ป้อนข้อมูลเพิ่มเติมที่จำเป็นสำหรับการดำเนินการคำสั่งหรือโปรแกรมที่รันอยู่ต่อไป ตัวแปรเริ่มต้น พีเอส2เรื่อง" >" - คุณอาจเห็นพรอมต์นี้แล้วเมื่อคุณรันคำสั่ง แมวเพื่อป้อนข้อมูลจากแป้นพิมพ์ลงในไฟล์ อีกตัวอย่างหนึ่งคือคำสั่ง ftpหลังจากเปิดตัวซึ่งคำเชิญก็ใช้แบบฟอร์มนี้ด้วย พรอมต์ตัวแปร พีเอส3ใช้ในคำสั่ง เลือก- พรอมต์ตัวแปร พีเอส4จะถูกพิมพ์ก่อนแต่ละคำสั่งในขณะนั้น ทุบตีติดตามความคืบหน้าของการดำเนินการ ค่าเริ่มต้นคือ " + ". หากคุณต้องการ คุณสามารถเปลี่ยนประเภทของตัวแปรได้ PS1และ พีเอส2- ในกรณีนี้ คุณสามารถใช้สัญลักษณ์ใดๆ ที่ป้อนจากแป้นพิมพ์ได้ เช่นเดียวกับอักขระพิเศษจำนวนหนึ่งซึ่งเมื่อสร้างสตริงพร้อมต์จะถูกถอดรหัสตามตาราง 5.3 (เราแสดงรายการเพียงบางส่วนเท่านั้น เป็นต้น สำหรับรายการทั้งหมด โปรดดูที่ man page ของยูทิลิตี้ ทุบตี) . ตารางที่ 5.3. อักขระพิเศษเพื่อสร้างคำเชิญ
หมายเลขคำสั่งปัจจุบัน (หมายเลขซีเรียลของคำสั่งที่กำลังดำเนินการภายในเซสชันปัจจุบัน) อาจแตกต่างจากหมายเลขของคำสั่งนี้ในรายการประวัติคำสั่ง เนื่องจากหมายเลขหลังมีคำสั่งที่บันทึกไว้ในไฟล์ประวัติคำสั่ง เมื่อเชลล์อ่านค่าของตัวแปรที่กำหนดคำใบ้แล้ว การแทนที่สามารถทำได้ตามกฎสำหรับการขยายพารามิเตอร์ การแทนที่ในชื่อคำสั่งและนิพจน์ทางคณิตศาสตร์ และการแยกคำ กฎเหล่านี้จะกล่าวถึงด้านล่างในหัวข้อ 5.7. เช่น หลังจากรันคำสั่งแล้ว (เนื่องจากมีช่องว่างในสตริง จึงต้องใส่เครื่องหมายคำพูด) # PS1="[\u@\h \W]\$" พรอมต์มาตรฐานจะแสดงวงเล็บเหลี่ยม ชื่อผู้ใช้ สัญลักษณ์ @ , ชื่อคอมพิวเตอร์, ช่องว่าง, ชื่อไดเร็กทอรีปัจจุบัน (ไม่มีพาธ), วงเล็บเหลี่ยมปิด และสัญลักษณ์ $ (หากผู้ใช้ทั่วไปใช้งานเชลล์) หรือ # (หากเชลล์ทำงานเป็นรูท) 5.6.3 ตัวแปร เส้นทางมีชื่อตัวแปรที่สำคัญมากอีกตัวหนึ่ง เส้นทาง- ระบุรายการเส้นทางไปยังไดเร็กทอรีที่ ทุบตีค้นหาไฟล์ (โดยเฉพาะไฟล์ที่มีคำสั่ง) ในกรณีที่ไม่ได้ระบุเส้นทางแบบเต็มไปยังไฟล์ในบรรทัดคำสั่ง แต่ละไดเร็กทอรีในรายการนี้จะถูกคั่นด้วยเครื่องหมายทวิภาค ตัวแปรเริ่มต้น เส้นทางรวมถึงไดเร็กทอรี /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin,กล่าวคือดูเหมือนว่า: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin: ในการเพิ่มไดเร็กทอรีลงในรายการนี้ คุณต้องรันคำสั่งต่อไปนี้: # PATH=$PATH:new_path. เมื่อดำเนินการค้นหา เชลล์จะค้นหาไดเร็กทอรีตามลำดับที่แสดงไว้ในตัวแปร PATH โปรดทราบว่าคุณสามารถรวมไดเร็กทอรีปัจจุบันไว้ในรายการนี้ได้โดยเพิ่มจุดให้กับตัวแปร PATH อย่างไรก็ตาม ไม่แนะนำสิ่งนี้ด้วยเหตุผลด้านความปลอดภัย ผู้โจมตีสามารถใส่คำสั่งในไดเร็กทอรีสาธารณะที่มีชื่อตรงกับคำสั่งใดคำสั่งหนึ่งที่ผู้ใช้ระดับสูงดำเนินการบ่อยครั้ง แต่ดำเนินการที่แตกต่างไปจากเดิมอย่างสิ้นเชิง (โดยเฉพาะอย่างยิ่งหากไดเร็กทอรีปัจจุบันอยู่ที่จุดเริ่มต้นของ รายการเส้นทางการค้นหา) 5.6.4 ตัวแปร ไอเอฟเอสตัวแปรนี้ระบุตัวคั่นฟิลด์ภายในที่ใช้ในการแยกคำระหว่างการแปลง บรรทัดคำสั่งดำเนินการโดยเชลล์ก่อนที่จะรันบรรทัดคำสั่งเพื่อดำเนินการ ค่าเริ่มต้นของตัวแปรนี้คือ "<Пробел> 5.6.5 ไดเร็กทอรีปัจจุบันและโฮมชื่อของไดเร็กทอรีปัจจุบันถูกจัดเก็บไว้ในตัวแปรสภาพแวดล้อม (ชื่อ PWD) และค่าของตัวแปรนี้จะเปลี่ยนแปลงทุกครั้งที่เริ่มโปรแกรม ซีดี(และเมื่อเปลี่ยนไดเร็กทอรีปัจจุบันด้วยวิธีอื่น เช่น ผ่าน Midnight Commander) เช่นเดียวกัน ชื่อเต็ม(ระบุเส้นทาง) ของโฮมไดเร็กทอรีของผู้ใช้ที่เรียกใช้กระบวนการนี้จะถูกเก็บไว้ในตัวแปร HOME 5.6.6 ทีม ส่งออกเมื่อเชลล์รันโปรแกรมหรือคำสั่ง มันจะส่งผ่านตัวแปรสภาพแวดล้อมบางส่วนไปให้พวกมัน เพื่อให้ตัวแปรสภาพแวดล้อมถูกส่งผ่านไปยังกระบวนการที่เรียกใช้จากเชลล์ จะต้องตั้งค่าโดยใช้คำสั่งพิเศษ ส่งออกนั่นคือแทน $ชื่อ=มูลค่า จำเป็นต้องเขียนมันลงไป $ส่งออกชื่อ=ค่า ในกรณีนี้ โปรแกรมทั้งหมดที่เปิดตัวจากเชลล์ (รวมถึงอินสแตนซ์รองของเชลล์ด้วย) จะสามารถเข้าถึงตัวแปรที่กำหนดในลักษณะนี้ กล่าวคือ พวกเขาสามารถเรียกค่าตามชื่อได้ V. Kostromin (kos และ rus-linux dot net) - 5.6. พารามิเตอร์และตัวแปร สภาพแวดล้อมของเชลล์ออบเจ็กต์ที่ตั้งชื่อและมีข้อมูลที่ใช้โดยแอปพลิเคชันอย่างน้อยหนึ่งรายการ ซึ่งโดยปกติจะเป็นหลายแอปพลิเคชันเรียกว่าตัวแปรสภาพแวดล้อม กล่าวง่ายๆ ก็คือ ตัวแปรสภาพแวดล้อมนั้นไม่มีอะไรมากไปกว่าตัวแปรที่มีชื่อและค่า ค่าตัวแปรสภาพแวดล้อมสามารถเป็นตัวแก้ไขเริ่มต้นที่จะใช้ได้ เช่น ตำแหน่งของไฟล์ทั้งหมดที่สามารถดำเนินการบนระบบ หรือการตั้งค่าท้องถิ่นสำหรับระบบ อาจเป็นเรื่องยากเล็กน้อยสำหรับผู้เริ่มต้น แต่ตัวแปรสภาพแวดล้อมเป็นวิธีที่ดีเยี่ยม การแบ่งปันการตั้งค่าการกำหนดค่าระหว่างหลายแอปพลิเคชันและกระบวนการ แพ็คเกจ Coreutils ประกอบด้วยโปรแกรม env และ printenv หากต้องการแสดงรายการตัวแปรสภาพแวดล้อมทั้งหมดที่มีค่าในปัจจุบัน เพียงพิมพ์: $printenv มีตัวแปรสภาพแวดล้อมสองประเภทใน bash shell:
ตัวแปรสิ่งแวดล้อมโลกจากเซสชันเชลล์ ตัวแปรสภาพแวดล้อมโกลบอลและกระบวนการลูกใดๆ ที่เชลล์สร้างขึ้นจะถูกแสดง ในทางกลับกัน ตัวแปรโลคัลสามารถเข้าถึงได้โดยเชลล์เมื่อสร้างขึ้นเท่านั้น สิ่งนี้ทำให้ตัวแปรสภาพแวดล้อมส่วนกลางมีประโยชน์ในแอปพลิเคชันที่ต้องการข้อมูลจากกระบวนการหลักและกระบวนการวางไข่ ตามค่าเริ่มต้น ระบบ Linux จะตั้งค่าตัวแปรสภาพแวดล้อมโกลบอลบางตัวเมื่อเริ่มเซสชันทุบตี ตัวแปรสภาพแวดล้อมของระบบจะใช้อักษรตัวพิมพ์ใหญ่ทั้งหมดในแต่ละครั้งเพื่อแยกความแตกต่างจากตัวแปรสภาพแวดล้อมของผู้ใช้ปกติ ตัวแปรสภาพแวดล้อมท้องถิ่นเนื่องจากชื่อบ่งชี้ว่าตัวแปรสภาพแวดล้อมภายในเครื่องสามารถมองเห็นได้เฉพาะในกระบวนการภายในเครื่องที่กำหนดไว้เท่านั้น อย่าสับสนเกี่ยวกับตัวแปรสภาพแวดล้อมภายในเครื่อง เพราะตัวแปรเหล่านี้มีความสำคัญพอๆ กับตัวแปรสภาพแวดล้อมส่วนกลาง ในความเป็นจริง ระบบ Linux จะกำหนดตัวแปรสภาพแวดล้อมท้องถิ่นมาตรฐานให้กับคุณตามค่าเริ่มต้น สิ่งนี้จะยุ่งยากเมื่อคุณพยายามดูรายการตัวแปรสภาพแวดล้อมในเครื่อง น่าเสียดายที่ไม่มีคำสั่งสำหรับเราที่จะแสดงเฉพาะตัวแปรสภาพแวดล้อมในเครื่องเท่านั้น มีคำสั่งที่แสดงตัวแปรสภาพแวดล้อมทั้งหมดที่ตั้งค่าไว้สำหรับกระบวนการเฉพาะ โปรดทราบว่าสิ่งนี้ยังรวมถึงตัวแปรสภาพแวดล้อมส่วนกลางด้วย การตั้งค่าตัวแปรสภาพแวดล้อมคุณสามารถสร้างตัวแปรสภาพแวดล้อมของคุณเองได้โดยตรงจาก bash shell ในส่วนถัดไป เราจะแสดงวิธีสร้างตัวแปรสภาพแวดล้อมของคุณเอง และอ้างอิงจากเชลล์เชิงโต้ตอบหรือโปรแกรมเชลล์ของคุณ การตั้งค่าตัวแปรสภาพแวดล้อมท้องถิ่นเมื่อเชลล์สคริปต์เริ่มทำงาน (หรือเชลล์สคริปต์ปรากฏขึ้น) คุณจะได้รับอนุญาตให้สร้างตัวแปรท้องถิ่นที่มองเห็นได้ภายในกระบวนการเชลล์ของคุณ คุณสามารถกำหนดตัวแปรสภาพแวดล้อมให้กับตัวแปรสตริงหรือตัวเลขได้โดยใช้เครื่องหมายเท่ากับ ซึ่งจะกำหนดค่าของตัวแปร: $ andreyex_test=การทดสอบ $ echo $andreyex_test การทดสอบ $ ยินดีด้วย คุณเพิ่งสร้างตัวแปรแรกของคุณแล้ว เพียงจำไว้ว่าทุกครั้งที่คุณต้องการอ้างอิงค่าของตัวแปรสภาพแวดล้อม andreyex_test เพียงอ้างอิงโดยใช้ชื่อ $andreyex_test หากคุณต้องการกำหนดสตริงค่าที่มีช่องว่าง คุณจะต้องใช้เครื่องหมายคำพูดเดี่ยวเพื่อระบุจุดเริ่มต้นและจุดสิ้นสุดของสตริง: $ andreyex_test=ทดสอบสตริงแบบยาว -bash: a: คำสั่ง ไม่พบ$ andreyex_test="ทดสอบสตริงแบบยาว" $ echo $andreyex_test ทดสอบสตริงแบบยาว หากปล่อยทิ้งไว้โดยไม่มีเครื่องหมายคำพูดเดี่ยว bash shell จะถือว่าอักขระถัดไปเป็นคำสั่งอื่นที่ต้องประมวลผล โปรดทราบว่าเราใช้สำหรับตัวแปรสภาพแวดล้อมท้องถิ่นที่เรากำหนดไว้ ตัวอักษรตัวพิมพ์เล็กตัวแปรสภาพแวดล้อมของระบบที่เราเคยเห็นมาได้ใช้ตัวพิมพ์ใหญ่ทั้งหมด ใน bash shell นี่คือแบบแผนมาตรฐาน หากคุณกำลังตั้งค่าตัวแปรสภาพแวดล้อมใหม่ สิ่งนี้ไม่จำเป็น แต่แนะนำให้ใช้ตัวพิมพ์เล็ก สิ่งนี้จะช่วยแยกความแตกต่างตัวแปรสภาพแวดล้อมส่วนบุคคลของคุณจากผลลัพธ์ของตัวแปรสภาพแวดล้อมระบบ บันทึก: สิ่งสำคัญมากคือต้องไม่มีช่องว่างระหว่างชื่อตัวแปรสภาพแวดล้อม เครื่องหมายเท่ากับ และค่า หากคุณเว้นวรรคใดๆ ในงาน bash shell จะตีความค่าเป็นคำสั่งแยกต่างหาก: $ andreyex_test2 = test -bash: andreyex_test2: ไม่พบคำสั่ง $ ตัวแปรสภาพแวดล้อมภายในเครื่องที่ตั้งค่าไว้ในกระบวนการเชลล์ของคุณจะพร้อมใช้งานทุกที่ในกระบวนการเชลล์ของคุณ แต่ถ้าคุณสร้างเชลล์อื่น เชลล์นั้นจะไม่สามารถใช้ได้ในเชลล์ย่อย: $ bash $ echo $andreyex_test $ exit exit $ echo $andreyex_test ทดสอบสตริงแบบยาว $ ในกรณีนี้ เราเริ่มต้นเชลล์ย่อย ดังที่คุณเห็นว่าตัวแปรสภาพแวดล้อม andreyex_test ไม่มีอยู่ในเชลล์ย่อย (ประกอบด้วยค่าว่าง) หลังจากที่เราออกจากเชลล์ลูกและกลับสู่เชลล์ดั้งเดิมแล้ว ตัวแปรสภาพแวดล้อมในเครื่องยังคงพร้อมใช้งาน ในทำนองเดียวกัน หากคุณตั้งค่าตัวแปรสภาพแวดล้อมเฉพาะที่ในกระบวนการลูกหลังจากที่คุณออกจากกระบวนการลูกแล้ว ตัวแปรสภาพแวดล้อมภายในเครื่องจะไม่สามารถเข้าถึงได้อีกต่อไป: $ bash $ andreyex_test=การทดสอบ $ echo $andreyex_test การทดสอบ $ ออก ทางออก $ echo $andreyex_test $ ตัวแปรสภาพแวดล้อม andreyex_test ที่ตั้งค่าในเชลล์ลูกไม่มีอยู่เมื่อเรากลับสู่เชลล์พาเรนต์ การตั้งค่าตัวแปรสภาพแวดล้อมทั่วโลกตัวแปรสภาพแวดล้อมส่วนกลางสามารถมองเห็นได้จากกระบวนการทั้งหมดของกระบวนการลูกที่สร้างขึ้นโดยกระบวนการที่ตั้งค่าตัวแปรสภาพแวดล้อมส่วนกลาง วิธีการที่ใช้ในการสร้างตัวแปรสภาพแวดล้อมส่วนกลางคือการสร้างตัวแปรสภาพแวดล้อมภายในเครื่อง จากนั้นจึงส่งออกไปยังสภาพแวดล้อมส่วนกลาง ทำได้โดยใช้คำสั่งส่งออก: $ echo $andreyex_test ทดสอบสตริงแบบยาว $ ส่งออก andreyex_test $ bash $ echo $andreyex_test ทดสอบสตริงแบบยาว $ หลังจากที่เราใช้คำสั่งส่งออกในตัวแปรสภาพแวดล้อมโลคัล andreyex_test เราก็เริ่มต้น กระบวนการใหม่เชลล์และดูค่าของตัวแปรสภาพแวดล้อม andreyex_test ในครั้งนี้ คำสั่งส่งออกทำให้ตัวแปรสภาพแวดล้อมโกลบอลเป็นแบบโกลบอล ดังนั้นจึงคงค่าของมันไว้ โปรดทราบว่าเมื่อคุณรันคำสั่งที่ส่งออกในตัวแปรสภาพแวดล้อมภายในเครื่อง คุณไม่ได้ใช้เครื่องหมายดอลลาร์เพื่ออ้างถึงชื่อตัวแปร การลบตัวแปรสภาพแวดล้อมแน่นอนว่า หากคุณสามารถสร้างตัวแปรสภาพแวดล้อมใหม่ได้ ก็สมเหตุสมผลที่คุณสามารถลบตัวแปรสภาพแวดล้อมที่มีอยู่ได้เช่นกัน ซึ่งสามารถทำได้โดยใช้คำสั่ง unset: $ echo $andreyex_test ทดสอบ $ ไม่ได้ตั้งค่า andreyex_test $ echo $andreyex_test $ หากคุณอ้างอิงตัวแปรสภาพแวดล้อมในคำสั่ง unset โปรดระวังอย่าใช้เครื่องหมายดอลลาร์ เมื่อทำงานกับตัวแปรสภาพแวดล้อมส่วนกลาง สิ่งต่างๆ จะซับซ้อนขึ้นเล็กน้อย หากคุณอยู่ในกระบวนการลูกและคุณปิดใช้งานตัวแปรสภาพแวดล้อมโกลบอล ตัวแปรนั้นจะมีผลกับกระบวนการลูกเท่านั้น ตัวแปรสภาพแวดล้อมโกลบอลยังคงมีอยู่ในกระบวนการหลัก: $ andreyex_test=การทดสอบ $ ส่งออก andreyex_test $ bash $ echo $andreyex_test การทดสอบ $ unset andreyex_test $ echo $andreyex_test $ ทางออก ทางออก $ echo $andreyex_test การทดสอบ $ ในตัวอย่างนี้ เราตั้งค่าตัวแปรสภาพแวดล้อมภายในเครื่องที่เรียกว่า andreyex_test จากนั้นจึงส่งออกตัวแปรดังกล่าวเพื่อให้เป็นตัวแปรสภาพแวดล้อมส่วนกลาง จากนั้นเราเริ่มกระบวนการเชลล์ย่อยและได้รับการตรวจสอบเพื่อให้แน่ใจว่าตัวแปรสภาพแวดล้อมโกลบอล andreyex_test ยังคงพร้อมใช้งาน จากนั้น ขณะที่ยังอยู่ในเชลล์ย่อย เราใช้คำสั่ง unset เพื่อลบตัวแปรสภาพแวดล้อมโกลบอล andreyex_test จากนั้นจึงออกจากเชลล์ย่อย ตอนนี้กลับมาที่พาเรนต์เชลล์ดั้งเดิมแล้ว เราได้ตรวจสอบค่าของตัวแปรสภาพแวดล้อม andreyex_test และยังคงใช้ได้อยู่ ตัวแปรสภาพแวดล้อมเชลล์เริ่มต้นมีตัวแปรสภาพแวดล้อมเฉพาะที่ bash shell ใช้เพื่อกำหนดสภาพแวดล้อมของระบบ คุณสามารถนับตัวแปรเหล่านี้เพื่อใช้บนระบบ Linux ของคุณได้เสมอ เนื่องจาก bash เชลล์เป็นอนุพันธ์ของเชลล์ Bourne Unix ดั้งเดิม จึงมีตัวแปรสภาพแวดล้อมที่กำหนดไว้แต่เดิมในเชลล์นั้นด้วย ตัวอย่างต่อไปนี้แสดงให้เห็นว่าตัวแปรสภาพแวดล้อมที่จัดทำโดย bash เชลล์เข้ากันได้กับเชลล์เป้าหมาย Unix ดั้งเดิม ตัวแปรสภาพแวดล้อมที่มีค่าที่สุดในรายการนี้คือตัวแปรสภาพแวดล้อม PATH เมื่อคุณป้อนคำสั่งในเชลล์คำสั่งเชลล์ (อินเทอร์เฟซบรรทัดคำสั่ง) เชลล์จะต้องค้นหาระบบเพื่อค้นหาโปรแกรม ไดเร็กทอรีที่ค้นหาคำสั่งจะถูกกำหนดโดยตัวแปรสภาพแวดล้อม PATH บนระบบ Linux ตัวแปรสภาพแวดล้อม PATH ควรมีลักษณะดังนี้: $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin $ กรณีนี้แสดงว่ามีไดเร็กทอรีแปดไดเร็กทอรีที่เชลล์ค้นหาคำสั่ง แต่ละไดเร็กทอรีจะถูกคั่นด้วยเครื่องหมายโคลอน และรายการไดเร็กทอรีที่ส่วนท้ายของตัวแปร PATH จะไม่มีวันสิ้นสุด คุณสามารถเพิ่มไดเร็กทอรีเพิ่มเติมให้กับ PATH ได้ตลอดเวลาโดยเพิ่มไดเร็กทอรีใหม่และเพิ่มโคลอนอื่น PATH ยังแสดงแบบสอบถามที่ค้นหาคำสั่งซื้อด้วย นอกเหนือจากตัวแปรสภาพแวดล้อม Bourne มาตรฐานแล้ว bash เชลล์ยังมีตัวแปรอีกหลายตัว ดังที่แสดง: ตัวแปร Bash Shell บอร์น:CDPATH: รายการไดเร็กทอรีที่คั่นด้วยโคลอนซึ่งใช้เป็นพาธการค้นหาสำหรับคำสั่ง cd ตัวแปรสภาพแวดล้อมของเชลล์ทุบตี:BASH: ชื่อพาธแบบเต็มเพื่อดำเนินการอินสแตนซ์ปัจจุบันของ bash shell คุณอาจสังเกตเห็นว่าหลังจากใช้คำสั่ง set ตัวแปรสภาพแวดล้อมเริ่มต้นบางรายการอาจไม่แสดง คำอธิบายสำหรับสิ่งนี้อาจเป็นได้ว่า แม้ว่าสิ่งเหล่านี้จะเป็นตัวแปรสภาพแวดล้อมเริ่มต้น แต่ก็ไม่จำเป็นต้องมีค่าทั้งหมด บทสรุปในคู่มือนี้ เราได้สำรวจโลกของตัวแปรสภาพแวดล้อม Linux ตัวแปรสภาพแวดล้อมโกลบอลมักจะเข้าถึงได้โดยกระบวนการลูกใดๆ ที่เกิดจากกระบวนการที่กำหนดไว้ ตัวแปรสภาพแวดล้อมภายในเครื่องจะสามารถเข้าถึงได้จากกระบวนการที่กำหนดไว้เท่านั้น ระบบ Linux ใช้ตัวแปรสภาพแวดล้อมโกลบอลและโลคัลแต่ละตัวเพื่อจัดเก็บข้อมูลเกี่ยวกับสภาพแวดล้อมของระบบ คุณจะสามารถเข้าถึงข้อมูลนี้ได้จากอินเทอร์เฟซบรรทัดคำสั่งของเชลล์ รวมถึงเชลล์สคริปต์ภายใน bash เชลล์ใช้ตัวแปรสภาพแวดล้อมของระบบที่กำหนดไว้ในเชลล์ UNO Bourne ดั้งเดิม รวมถึงตัวแปรสภาพแวดล้อมใหม่อีกมากมาย ตัวแปรสภาพแวดล้อม PATH กำหนดรูปแบบการค้นหาที่ bash shell ยอมรับเมื่อค้นหาคำสั่งที่ปฏิบัติการได้ คุณจะสามารถเปลี่ยนตัวแปรสภาพแวดล้อม PATH เพื่อเพิ่มไดเร็กทอรีของคุณเอง หรืออาจเป็นสัญลักษณ์ไดเร็กทอรีปัจจุบัน เพื่อให้โปรแกรมของคุณทำงานได้ง่ายขึ้น คุณยังสามารถสร้างตัวแปรสภาพแวดล้อมส่วนกลางและท้องถิ่นของคุณเองเพื่อการใช้งานของคุณเองได้ เมื่อสร้างตัวแปรสภาพแวดล้อมแล้ว ตัวแปรนั้นจะพร้อมใช้งานสำหรับเซสชันเชลล์ทั้งหมด มีไฟล์เริ่มต้นหลายไฟล์ที่เริ่ม bash shell เมื่อเริ่มต้นแล้ว ไฟล์เริ่มต้นเหล่านี้อาจมีคำจำกัดความของตัวแปรสภาพแวดล้อมเพื่อตั้งค่าตัวแปรสภาพแวดล้อมมาตรฐานสำหรับแต่ละเซสชันทุบตี หลังจากเข้าสู่ระบบแล้ว ระบบลินุกซ์ bash shell เข้าถึงไฟล์เริ่มต้น /etc/profile และสามไฟล์ ไฟล์ในเครื่องเปิดตัวสำหรับผู้ใช้แต่ละคน $HOME/.bash, $HOME/.bash เข้าสู่ระบบ และ $HOME/.profile ผู้ใช้จะปรับแต่งไฟล์เหล่านี้เพื่อรวมตัวแปรสภาพแวดล้อมและสคริปต์เริ่มต้นใช้งานของตนเอง bash shell ยังจัดเตรียมอาร์เรย์ตัวแปรสภาพแวดล้อมเพิ่มเติม ตัวแปรสภาพแวดล้อมเหล่านี้สามารถมีหลายค่าในตัวแปรเดียว คุณจะสามารถเข้าถึงค่าแต่ละรายการได้โดยการระบุค่าดัชนีหรือโดยรวมโดยระบุชื่ออาร์เรย์ตัวแปรสภาพแวดล้อมแบบเต็ม สุดท้ายนี้ ในคู่มือนี้ เราต้องกล่าวถึงการใช้นามแฝงของคำสั่ง แม้ว่าจะไม่ใช่ตัวแปรสภาพแวดล้อม แต่นามแฝงของคำสั่งจะทำงานเหมือนกับตัวแปรสภาพแวดล้อม ช่วยให้คุณสามารถกำหนดนามแฝงสำหรับคำสั่งพร้อมกับพารามิเตอร์ได้ แทนที่จะพิมพ์คำสั่งและพารามิเตอร์ที่ยาวมาก คุณจะสามารถกำหนดนามแฝงง่ายๆ และใช้นามแฝงได้ตลอดเวลาในเซสชันเชลล์ของคุณ ตัวแปรสภาพแวดล้อม Linux พร้อมด้วยตัวแปรเชลล์คือสิ่งที่กำหนดการตั้งค่าภายในเซสชันผู้ใช้ พวกมันจะถูกโหลดโดยอัตโนมัติ แต่สามารถแทนที่ได้ สภาพแวดล้อมจะถูกสร้างขึ้นทุกครั้งที่คุณเข้าสู่ระบบ ตัวแปรสภาพแวดล้อม Linux, ตัวแปรเชลล์ตัวแปรสภาพแวดล้อมใช้สำหรับกระบวนการเชลล์ผู้ใช้และกระบวนการย่อยทั้งหมดเกิดขึ้นภายใน ตัวแปรเชลล์มีข้อมูลที่กำหนดสถานะของเซสชันปัจจุบัน ตัวอย่างเช่น ไดเร็กทอรีปัจจุบัน แต่ละเซสชันใช้ทั้งตัวแปรสภาพแวดล้อมและตัวแปรเชลล์ สามารถดูรายการตัวแปรสภาพแวดล้อมได้โดยการรัน โรงพิมพ์หรือ สิ่งแวดล้อม ……
ความแตกต่างก็คือว่า โรงพิมพ์ช่วยให้คุณสามารถแสดงข้อมูลสำหรับตัวแปรเฉพาะ - ตัวอย่างเช่น: ข้อดีของ env คือทำให้สามารถส่งตัวแปรไปยังคำสั่งเฉพาะได้ ตัวอย่างเช่น:
ดูตัวแปรสภาพแวดล้อม BASH=/bin/bash
สามารถเปลี่ยนเส้นทางเอาต์พุตไปที่ น้อยเพื่อให้ง่ายต่อการนำทาง เพื่อกำจัดข้อมูลที่ไม่จำเป็นในเอาต์พุตโดยไม่ต้องเปลี่ยนสภาพแวดล้อมปัจจุบัน คุณสามารถทำได้ดังนี้: ในโหมด POSIX ฟังก์ชัน bash ที่ระบุจะไม่ถูกพิมพ์ ตัวแปรที่ใช้บ่อยที่สุด:
คำสั่งเชลล์ช่วยให้คุณสามารถเปลี่ยนค่าของตัวแปรได้ ดังนั้น pwd จะแสดงไดเร็กทอรีปัจจุบันไปยังคอนโซล /home/admin นี่คือตัวแปรเชลล์ PWD
OLDPWD=/tmp
ไปที่ /tmp แล้วดูว่าค่าเปลี่ยนแปลงไปอย่างไร
OLDPWD=/home/admin
คุณจะเห็นว่าเมื่อคุณเปลี่ยนไดเร็กทอรี ค่าของตัวแปรเชลล์ PWD ก็เปลี่ยนไป และ OLDPWD วิธีการตั้งค่าสภาพแวดล้อมหรือตัวแปรเชลล์ตัวแปรเชลล์ถูกเพิ่มเช่นนี้ ซัมวาร์ = "สวัสดี" จะไม่อยู่ในเอาต์พุต env เนื่องจากเป็นตัวแปรเชลล์ ไม่ใช่ตัวแปรสภาพแวดล้อม คุณสามารถดูเนื้อหาผ่านเสียงสะท้อนได้โดยการเพิ่มเครื่องหมาย $ หน้าชื่อ สวัสดี หากต้องการเพิ่มตัวแปรให้กับสภาพแวดล้อม คุณต้องส่งออกตัวแปรดังกล่าว
ซัมวาร์=สวัสดี หลังจากนี้ ค่าจะถูกสืบทอดโดยกระบวนการลูก คุณสามารถลบตัวแปรสภาพแวดล้อมได้โดยใช้คำสั่งส่งออกเดียวกันกับคีย์ -n ค่าจะถูกลบออกจากเชลล์ที่ไม่ได้ตั้งค่า การโหลดตัวแปรอัตโนมัติเมื่อเข้าสู่ระบบระบบ Linux ใช้ไฟล์ ~/.bashrc, ~/.bash_profile, ~/.bash_loginหรือ ~/.profileเพื่อกำหนดตัวแปร ไฟล์จะถูกอ่านระหว่างการเข้าสู่ระบบ ซึ่งไฟล์ที่ใช้จะขึ้นอยู่กับการแจกจ่าย บน Ubuntu/Debain นี่คือ ~/.bashrc มันเพิ่มทั้งตัวแปรสภาพแวดล้อมและตัวแปรเชลล์ อันแรกก็อ่านแล้ว /etc/profile- โดยจะระบุและสามารถแทนที่ไฟล์ที่จะใช้ถัดไปและในลำดับใดได้ สำหรับเซสชันที่ไม่ได้เข้าสู่ระบบ ตัวแปรจะถูกตั้งค่าใน /etc/bash.bashrc เซสชันนี้เป็นเรื่องปกติสำหรับสคริปต์ที่ทำงานอยู่เบื้องหลัง สำหรับงานส่วนใหญ่ก็เพียงพอที่จะแก้ไข ~/.bashrc. |
อ่าน: |
---|
ใหม่
- รูปแบบหนังสือ
- การเชื่อมต่อและตั้งค่าทีวีแบบโต้ตอบจาก Rostelecom
- วิธีลบบัญชี Instagram ของคุณ
- แท็บเล็ต Android หรือ iPad - จะเลือกอะไรดี?
- วิธีจัดรูปแบบความต่อเนื่องของตารางใน Word อย่างถูกต้อง
- จะทำอย่างไรถ้าคุณพัฒนาแบบออฟไลน์
- การทดสอบโปรเซสเซอร์ว่ามีความร้อนสูงเกินไป
- บริการสาธารณะของ Yesia คืออะไร
- ตำแหน่งของหัวบนเสาอากาศ
- วิธีดาวน์โหลดและกำหนดค่าผู้ช่วยอัจฉริยะสำหรับอุปกรณ์ Android