Unix / Linux - สภาพแวดล้อม
ในบทนี้เราจะพูดถึงรายละเอียดเกี่ยวกับสภาพแวดล้อม Unix แนวคิด Unix ที่สำคัญคือไฟล์environmentซึ่งกำหนดโดยตัวแปรสภาพแวดล้อม บางโปรแกรมถูกกำหนดโดยระบบคนอื่น ๆ โดยคุณและคนอื่น ๆ โดยเชลล์หรือโปรแกรมใด ๆ ที่โหลดโปรแกรมอื่น
ตัวแปรคือสตริงอักขระที่เรากำหนดค่า ค่าที่กำหนดอาจเป็นตัวเลขข้อความชื่อไฟล์อุปกรณ์หรือข้อมูลประเภทอื่น ๆ
ตัวอย่างเช่นก่อนอื่นเราตั้งค่าตัวแปร TEST จากนั้นเราเข้าถึงค่าของมันโดยใช้ echo คำสั่ง -
$TEST="Unix Programming"
$echo $TEST
จะให้ผลลัพธ์ดังต่อไปนี้
Unix Programming
โปรดสังเกตว่าตัวแปรสภาพแวดล้อมถูกตั้งค่าโดยไม่ใช้ $ลงชื่อเข้าใช้ แต่ในขณะที่เข้าถึงเราใช้เครื่องหมาย $ เป็นคำนำหน้า ตัวแปรเหล่านี้ยังคงรักษาค่าไว้จนกว่าเราจะออกมาจากเปลือก
เมื่อคุณเข้าสู่ระบบเชลล์จะผ่านเฟสที่เรียกว่า initializationเพื่อตั้งค่าสภาพแวดล้อม โดยปกติจะเป็นกระบวนการสองขั้นตอนที่เกี่ยวข้องกับเชลล์อ่านไฟล์ต่อไปนี้ -
- /etc/profile
- profile
กระบวนการมีดังนี้ -
เชลล์ตรวจสอบเพื่อดูว่าไฟล์ /etc/profile มีอยู่
ถ้ามีอยู่เชลล์จะอ่านมัน มิฉะนั้นไฟล์นี้จะถูกข้ามไป ไม่มีข้อความแสดงข้อผิดพลาดปรากฏขึ้น
เชลล์ตรวจสอบเพื่อดูว่าไฟล์ .profileมีอยู่ในโฮมไดเร็กทอรีของคุณ โฮมไดเร็กทอรีของคุณคือไดเร็กทอรีที่คุณเริ่มต้นหลังจากที่คุณเข้าสู่ระบบ
ถ้ามีอยู่เชลล์จะอ่านมัน มิฉะนั้นเชลล์จะข้ามไป ไม่มีข้อความแสดงข้อผิดพลาดปรากฏขึ้น
ทันทีที่อ่านไฟล์ทั้งสองนี้เชลล์จะแสดงพร้อมต์ -
$
นี่คือพรอมต์ที่คุณสามารถป้อนคำสั่งเพื่อให้ดำเนินการได้
Note - ขั้นตอนการเริ่มต้นเชลล์ที่มีรายละเอียดที่นี่ใช้กับทุกคน Bourne พิมพ์เชลล์ แต่ไฟล์เพิ่มเติมบางไฟล์ถูกใช้โดย bash และ ksh.
ไฟล์. profile
ไฟล์ /etc/profile ได้รับการดูแลโดยผู้ดูแลระบบของเครื่อง Unix ของคุณและมีข้อมูลการเตรียมใช้งานเชลล์ที่ผู้ใช้ทุกคนต้องการในระบบ
ไฟล์ .profileอยู่ภายใต้การควบคุมของคุณ คุณสามารถเพิ่มข้อมูลการปรับแต่งเชลล์ลงในไฟล์นี้ได้มากเท่าที่คุณต้องการ ชุดข้อมูลขั้นต่ำที่คุณต้องกำหนดค่าประกอบด้วย -
- ประเภทของเครื่องปลายทางที่คุณใช้
- รายชื่อไดเร็กทอรีที่ใช้ค้นหาคำสั่ง
- รายการตัวแปรที่มีผลต่อรูปลักษณ์ของเครื่องปลายทางของคุณ
คุณสามารถตรวจสอบไฟล์ .profileมีอยู่ในโฮมไดเร็กทอรีของคุณ เปิดโดยใช้ตัวแก้ไข vi และตรวจสอบตัวแปรทั้งหมดที่กำหนดไว้สำหรับสภาพแวดล้อมของคุณ
การตั้งค่าประเภทเทอร์มินัล
โดยปกติแล้วประเภทของเทอร์มินัลที่คุณใช้จะได้รับการกำหนดค่าโดยอัตโนมัติโดย login หรือ gettyโปรแกรม บางครั้งกระบวนการกำหนดค่าอัตโนมัติคาดเดาเทอร์มินัลของคุณไม่ถูกต้อง
หากเทอร์มินัลของคุณตั้งค่าไม่ถูกต้องผลลัพธ์ของคำสั่งอาจดูแปลก ๆ หรือคุณอาจไม่สามารถโต้ตอบกับเชลล์ได้อย่างถูกต้อง
เพื่อให้แน่ใจว่าไม่เป็นเช่นนั้นผู้ใช้ส่วนใหญ่ตั้งค่าเทอร์มินัลเป็นตัวส่วนร่วมต่ำสุดด้วยวิธีต่อไปนี้ -
$TERM=vt100
$
การตั้งค่า PATH
เมื่อคุณพิมพ์คำสั่งใด ๆ บนพรอมต์คำสั่งเชลล์จะต้องค้นหาคำสั่งก่อนที่จะดำเนินการได้
ตัวแปร PATH ระบุตำแหน่งที่เชลล์ควรค้นหาคำสั่ง โดยปกติตัวแปร Path จะถูกตั้งค่าดังนี้ -
$PATH=/bin:/usr/bin
$
ที่นี่แต่ละรายการคั่นด้วยอักขระโคลอน (:)เป็นไดเรกทอรี หากคุณร้องขอให้เชลล์รันคำสั่งและไม่พบในไดเร็กทอรีใด ๆ ที่ระบุในตัวแปร PATH ข้อความที่คล้ายกับต่อไปนี้จะปรากฏขึ้น -
$hello
hello: not found
$
มีตัวแปรเช่น PS1 และ PS2 ซึ่งจะกล่าวถึงในหัวข้อถัดไป
ตัวแปร PS1 และ PS2
อักขระที่เชลล์แสดงเป็นพรอมต์คำสั่งของคุณจะถูกเก็บไว้ในตัวแปร PS1 คุณสามารถเปลี่ยนตัวแปรนี้ให้เป็นอะไรก็ได้ที่คุณต้องการ ทันทีที่คุณเปลี่ยนมันจะถูกใช้โดยเชลล์ตั้งแต่จุดนั้นเป็นต้นไป
ตัวอย่างเช่นหากคุณออกคำสั่ง -
$PS1='=>'
=>
=>
=>
ข้อความแจ้งของคุณจะกลายเป็น => เพื่อตั้งค่าของPS1 เพื่อให้แสดงไดเร็กทอรีการทำงานออกคำสั่ง -
=>PS1="[\u@\h \w]\$"
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$
ผลลัพธ์ของคำสั่งนี้คือพรอมต์แสดงชื่อผู้ใช้ของผู้ใช้ชื่อเครื่อง (ชื่อโฮสต์) และไดเร็กทอรีการทำงาน
มีค่อนข้างน้อย escape sequencesที่สามารถใช้เป็นอาร์กิวเมนต์ค่าสำหรับ PS1; พยายาม จำกัด ตัวเองให้อยู่ในภาวะวิกฤตที่สุดเพื่อไม่ให้ข้อความแจ้งข้อมูลท่วมท้นคุณ
ซีเนียร์ | ลำดับและคำอธิบาย Escape |
---|---|
1 | \t เวลาปัจจุบันแสดงเป็น HH: MM: SS |
2 | \d วันที่ปัจจุบันแสดงเป็น Weekday Month Date |
3 | \n ขึ้นบรรทัดใหม่ |
4 | \s สภาพแวดล้อมเชลล์ปัจจุบัน |
5 | \W ไดเร็กทอรีการทำงาน |
6 | \w เส้นทางแบบเต็มของไดเร็กทอรีการทำงาน |
7 | \u ชื่อผู้ใช้ของผู้ใช้ปัจจุบัน |
8 | \h ชื่อโฮสต์ของเครื่องปัจจุบัน |
9 | \# หมายเลขคำสั่งของคำสั่งปัจจุบัน เพิ่มขึ้นเมื่อป้อนคำสั่งใหม่ |
10 | \$ ถ้า UID ที่มีประสิทธิภาพคือ 0 (นั่นคือถ้าคุณล็อกอินด้วยรูท) ให้จบพร้อมท์ด้วยอักขระ # มิฉะนั้นให้ใช้เครื่องหมาย $ |
คุณสามารถทำการเปลี่ยนแปลงได้ด้วยตัวเองทุกครั้งที่คุณเข้าสู่ระบบหรือคุณสามารถทำการเปลี่ยนแปลงโดยอัตโนมัติใน PS1 โดยเพิ่มลงใน .profile ไฟล์.
เมื่อคุณออกคำสั่งที่ไม่สมบูรณ์เชลล์จะแสดงพรอมต์รองและรอให้คุณทำคำสั่งเสร็จแล้วกด Enter อีกครั้ง.
พรอมต์รองเริ่มต้นคือ > (เครื่องหมายที่มากกว่า) แต่สามารถเปลี่ยนแปลงได้โดยการกำหนด PS2 ตัวแปรเชลล์ -
ต่อไปนี้เป็นตัวอย่างที่ใช้พรอมต์รองเริ่มต้น -
$ echo "this is a
> test"
this is a
test
$
ตัวอย่างด้านล่างกำหนด PS2 ใหม่ด้วยพรอมต์ที่กำหนดเอง -
$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$
ตัวแปรสภาพแวดล้อม
ต่อไปนี้เป็นรายการบางส่วนของตัวแปรสภาพแวดล้อมที่สำคัญ ตัวแปรเหล่านี้ได้รับการตั้งค่าและเข้าถึงตามที่ระบุไว้ด้านล่าง -
ซีเนียร์ | ตัวแปรและคำอธิบาย |
---|---|
1 | DISPLAY มีตัวระบุสำหรับการแสดงผลที่ X11 โปรแกรมควรใช้โดยค่าเริ่มต้น |
2 | HOME ระบุโฮมไดเร็กทอรีของผู้ใช้ปัจจุบัน: อาร์กิวเมนต์ดีฟอลต์สำหรับ cd built-in คำสั่ง |
3 | IFS บ่งชี้ Internal Field Separator ที่ใช้โดย parser สำหรับการแยกคำหลังจากการขยาย |
4 | LANG LANG ขยายเป็นภาษาของระบบเริ่มต้น LC_ALL สามารถใช้เพื่อลบล้างสิ่งนี้ได้ ตัวอย่างเช่นหากค่าของมันคือpt_BRจากนั้นภาษาจะถูกตั้งค่าเป็น (บราซิล) โปรตุเกสและภาษาเป็นบราซิล |
5 | LD_LIBRARY_PATH ระบบ Unix ที่มีตัวเชื่อมโยงแบบไดนามิกมีรายการไดเร็กทอรีที่มีการแบ่งสีซึ่งตัวเชื่อมโยงแบบไดนามิกควรค้นหาวัตถุที่แบ่งใช้เมื่อสร้างอิมเมจกระบวนการหลังจาก exec ก่อนที่จะค้นหาในไดเร็กทอรีอื่น |
6 | PATH ระบุเส้นทางการค้นหาสำหรับคำสั่ง เป็นรายการไดเร็กทอรีที่คั่นด้วยโคลอนซึ่งเชลล์จะค้นหาคำสั่ง |
7 | PWD ระบุไดเร็กทอรีการทำงานปัจจุบันตามที่กำหนดโดยคำสั่ง cd |
8 | RANDOM สร้างจำนวนเต็มสุ่มระหว่าง 0 ถึง 32,767 ในแต่ละครั้งที่มีการอ้างอิง |
9 | SHLVL เพิ่มขึ้นทีละครั้งในแต่ละครั้งที่เริ่มต้นการทุบตี ตัวแปรนี้มีประโยชน์สำหรับการพิจารณาว่าคำสั่ง exit ในตัวจะสิ้นสุดเซสชันปัจจุบันหรือไม่ |
10 | TERM หมายถึงประเภทการแสดงผล |
11 | TZ หมายถึงเขตเวลา สามารถใช้ค่าเช่น GMT, AST และอื่น ๆ |
12 | UID ขยายเป็น ID ผู้ใช้ที่เป็นตัวเลขของผู้ใช้ปัจจุบันเริ่มต้นเมื่อเริ่มต้นเชลล์ |
ต่อไปนี้เป็นตัวอย่างตัวอย่างที่แสดงตัวแปรสภาพแวดล้อม -
$ echo $HOME
/root
]$ echo $DISPLAY
$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$