เวิร์กสเตชันออนไลน์ของ OnWorks Linux และ Windows

โลโก้

ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | Contents | ถัดไป>

3.2. การวางแนวในระบบไฟล์‌‌


3.2.1. เส้นทาง


เมื่อคุณต้องการให้ระบบดำเนินการคำสั่ง คุณแทบจะไม่ต้องให้เส้นทางแบบเต็มไปยังคำสั่งนั้นเลย ตัวอย่างเช่น เรารู้ว่า ls คำสั่งอยู่ในไฟล์ / bin ไดเร็กทอรี (ตรวจสอบกับ ที่ -a ls) แต่เราไม่ต้องป้อนคำสั่ง /ถัง/ลิตร เพื่อให้คอมพิวเตอร์แสดงรายการเนื้อหาของไดเร็กทอรีปัจจุบัน


การขอ เส้นทาง ตัวแปรสภาพแวดล้อมดูแลสิ่งนี้ ตัวแปรนี้แสดงรายการไดเร็กทอรีเหล่านั้นในระบบที่สามารถพบไฟล์เรียกทำงาน และทำให้ผู้ใช้ประหยัดเวลาในการพิมพ์และจดจำตำแหน่งของคำสั่งต่างๆ ดังนั้นเส้นทางจึงมีไดเร็กทอรีจำนวนมากที่มี ถัง ในชื่อของพวกเขาตามที่ผู้ใช้ด้านล่างแสดงให้เห็น NS เสียงสะท้อน คำสั่งใช้แสดงเนื้อหา ("$") ของตัวแปร เส้นทาง:


โรเจอร์:> เสียงสะท้อน $PATH

/opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin

โรเจอร์:> เสียงสะท้อน $PATH

/opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin

ในตัวอย่างนี้ ไดเร็กทอรี /opt/local/bin, /usr/X11R6/bin, / usr / bin, / usr / sbin และ

/ bin ต่อมาก็ค้นหาโปรแกรมที่ต้องการ ทันทีที่พบรายการที่ตรงกัน การค้นหาจะหยุด แม้ว่าจะไม่ได้ค้นหาทุกไดเร็กทอรีในพาธก็ตาม นี้สามารถนำไปสู่สถานการณ์ที่แปลก ในตัวอย่างแรกด้านล่าง ผู้ใช้รู้ว่ามีโปรแกรมที่เรียกว่า ส่ง sms เพื่อส่งข้อความ SMS และผู้ใช้อื่นในระบบเดียวกันสามารถใช้งานได้ แต่เธอไม่สามารถทำได้ ความแตกต่างอยู่ในการกำหนดค่าของ เส้นทาง ตัวแปร:


[jenny@blob เจนนี่]$ ส่ง sms bash: sendsms: ไม่พบคำสั่ง [jenny@blob jenny]$ echo $PATH

/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/home/jenny/bin [jenny@blob jenny]$ su - โทนี่

รหัสผ่าน: tony:~>ซึ่งส่งsms

sendsms คือ /usr/local/bin/sendsms


โทนี่:~>echo $PATH

/home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\

/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin

[jenny@blob เจนนี่]$ ส่ง sms bash: sendsms: ไม่พบคำสั่ง [jenny@blob jenny]$ echo $PATH

/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/home/jenny/bin [jenny@blob jenny]$ su - โทนี่

รหัสผ่าน: tony:~>ซึ่งส่งsms

sendsms คือ /usr/local/bin/sendsms


โทนี่:~>echo $PATH

/home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\

/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin

สังเกตการใช้ su (switch user) สิ่งอำนวยความสะดวก ซึ่งอนุญาตให้คุณเรียกใช้เชลล์ในสภาพแวดล้อมของผู้ใช้รายอื่น โดยที่คุณทราบรหัสผ่านของผู้ใช้


แบ็กสแลชระบุความต่อเนื่องของบรรทัดถัดไป โดยไม่มีเครื่องหมาย เข้าสู่ แยกบรรทัดหนึ่งออกจากอีกบรรทัดหนึ่ง


ในตัวอย่างถัดไป ผู้ใช้ต้องการโทรหา wc (จำนวนคำ) คำสั่งตรวจสอบจำนวนบรรทัดในไฟล์ แต่ไม่มีอะไรเกิดขึ้น และเขาต้องหยุดการกระทำของเขาโดยใช้ Ctrl+C การผสมผสาน:


จัมเปอร์:~> wc -l ทดสอบ


(Ctrl-C)

จัมเปอร์:~> ซึ่ง wc

wc ถูกแฮช (/home/jumper/bin/wc)


จัมเปอร์:~> เสียงสะท้อน $PATH

/home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\

/usr/bin:/usr/sbin:/bin:/sbin

จัมเปอร์:~> wc -l ทดสอบ


(Ctrl-C)

จัมเปอร์:~> ซึ่ง wc

wc ถูกแฮช (/home/jumper/bin/wc)


จัมเปอร์:~> เสียงสะท้อน $PATH

/home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\

/usr/bin:/usr/sbin:/bin:/sbin

การใช้งานของ ที่ คำสั่งแสดงให้เราเห็นว่าผู้ใช้รายนี้มี ถัง-ไดเร็กทอรีในโฮมไดเร็กตอรี่ของเขา ซึ่งมีโปรแกรมที่เรียกว่า wc. เนื่องจากโปรแกรมในโฮมไดเร็กตอรี่ของเขาจะพบก่อนเมื่อค้นหา


เส้นทางที่เรียกร้องสำหรับ wc, โปรแกรม "ทำเอง" นี้ถูกดำเนินการ โดยอินพุตอาจไม่เข้าใจ ดังนั้นเราจึงต้องหยุดมัน ในการแก้ไขปัญหานี้มีหลายวิธี (มีหลายวิธีในการแก้ปัญหาใน UNIX/Linux เสมอ): คำตอบหนึ่งอาจเป็นการเปลี่ยนชื่อผู้ใช้ wc โปรแกรมหรือผู้ใช้สามารถกำหนดเส้นทางแบบเต็มไปยังคำสั่งที่ต้องการได้โดยใช้คำสั่ง -a ตัวเลือก ที่ คำสั่ง


หากผู้ใช้ใช้โปรแกรมในไดเร็กทอรีอื่นบ่อยขึ้น เขาสามารถเปลี่ยนเส้นทางเพื่อดูในไดเร็กทอรีของตนเองได้:


จัมเปอร์:~> เส้นทางการส่งออก=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\

/usr/bin:/usr/sbin:/bin:/sbin:/home/จัมเปอร์/bin

จัมเปอร์:~> เส้นทางการส่งออก=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\

/usr/bin:/usr/sbin:/bin:/sbin:/home/จัมเปอร์/bin


ภาพการเปลี่ยนแปลงไม่ถาวร!

 

ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: