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
$