<ก่อนหน้านี้ | เนื้อหา | ถัดไป>
ตำแหน่งไฟล์สคริปต์
ด้วยการตั้งค่าการอนุญาต ตอนนี้เราสามารถรันสคริปต์ของเราได้:
[me@linuxbox ~]$ ./สวัสดีชาวโลก
สวัสดีชาวโลก!
[me@linuxbox ~]$ ./สวัสดีชาวโลก
สวัสดีชาวโลก!
เพื่อให้สคริปต์ทำงาน เราต้องนำหน้าชื่อสคริปต์ด้วยเส้นทางที่ชัดเจน หากไม่เป็นเช่นนั้น เราจะได้สิ่งนี้:
[me@linuxbox ~]$ สวัสดีชาวโลก
bash: hello_world: ไม่พบคำสั่ง
[me@linuxbox ~]$ สวัสดีชาวโลก
bash: hello_world: ไม่พบคำสั่ง
ทำไมถึงเป็นเช่นนี้? อะไรทำให้สคริปต์ของเราแตกต่างจากโปรแกรมอื่น ปรากฏว่าไม่มีอะไร สคริปต์ของเราดี ตำแหน่งของมันคือปัญหา ย้อนกลับไปในบทที่ 11 เราได้พูดถึง เส้นทาง ตัวแปรสภาพแวดล้อมและผลกระทบต่อวิธีที่ระบบค้นหาโปรแกรมปฏิบัติการ เพื่อสรุป ระบบจะค้นหารายการไดเร็กทอรีทุกครั้งที่จำเป็นต้องค้นหาโปรแกรมปฏิบัติการ หากไม่มีการระบุพาธที่ชัดเจน นี่คือวิธีที่ระบบรู้วิธีดำเนินการ
/bin/ls เมื่อเราพิมพ์ ls ที่บรรทัดคำสั่ง ไดเร็กทอรี /bin เป็นหนึ่งในไดเร็กทอรีที่ระบบค้นหาโดยอัตโนมัติ รายการไดเร็กทอรีถูกเก็บไว้ในตัวแปรสภาพแวดล้อมชื่อ PATH ตัวแปร PATH มีรายการไดเร็กทอรีที่คั่นด้วยเครื่องหมายทวิภาคที่จะค้นหา เราสามารถดูเนื้อหาของ PATH:
ตำแหน่งไฟล์สคริปต์
[me@linuxbox ~]$ เสียงสะท้อน $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
/bin:/usr/เกม
[me@linuxbox ~]$ เสียงสะท้อน $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
/bin:/usr/เกม
ที่นี่เราเห็นรายชื่อไดเร็กทอรีของเรา หากสคริปต์ของเราอยู่ในไดเร็กทอรีใด ๆ ในรายการ ปัญหาของเราจะได้รับการแก้ไข สังเกตไดเร็กทอรีแรกในรายการ
/home/me/bin. ลีนุกซ์รุ่นส่วนใหญ่กำหนดค่าตัวแปร PATH ให้มีไดเร็กทอรี bin ในไดเร็กทอรีโฮมของผู้ใช้, เพื่อให้ผู้ใช้สามารถรันโปรแกรมของตนเองได้ ดังนั้น หากเราสร้างไดเร็กทอรี bin และวางสคริปต์ของเราไว้ภายใน ไดเร็กทอรีควรจะเริ่มทำงานเหมือนกับโปรแกรมอื่นๆ:
[me@linuxbox ~]$ mkdir บิน [me@linuxbox ~]$ mv hello_world บิน [me@linuxbox ~]$ สวัสดีชาวโลก
สวัสดีชาวโลก!
[me@linuxbox ~]$ mkdir บิน [me@linuxbox ~]$ mv hello_world บิน [me@linuxbox ~]$ สวัสดีชาวโลก
สวัสดีชาวโลก!
และมันก็เป็นเช่นนั้น
ถ้า เส้นทาง ตัวแปรไม่มีไดเร็กทอรี เราสามารถเพิ่มไดเร็กทอรีได้โดยการรวมบรรทัดนี้ในของเรา .bashrc ไฟล์:
เส้นทางการส่งออก=~/bin:"$เส้นทาง"
เส้นทางการส่งออก=~/bin:"$เส้นทาง"
หลังจากทำการเปลี่ยนแปลงแล้ว จะมีผลในเทอร์มินัลเซสชันใหม่แต่ละเซสชัน เพื่อนำการเปลี่ยนแปลงไปใช้กับเทอร์มินัลเซสชันปัจจุบัน เราต้องให้เชลล์อ่านค่า . อีกครั้ง .bashrc ไฟล์. ซึ่งสามารถทำได้โดย "การจัดหา" มัน:
[me@linuxbox ~]$ - .bashrc
[me@linuxbox ~]$ - .bashrc
จุด (.) คำสั่งเป็นคำพ้องความหมายสำหรับ แหล่ง คำสั่ง เชลล์บิวด์อินซึ่งอ่านไฟล์ที่ระบุของคำสั่งเชลล์และถือว่าคำสั่งนั้นเหมือนกับอินพุตจากแป้นพิมพ์
หมายเหตุ: Ubuntu (และการแจกแจงแบบเดเบียนอื่น ๆ ส่วนใหญ่) จะเพิ่ม .โดยอัตโนมัติ
~/bin ไดเร็กทอรีไปยังตัวแปร PATH ถ้าไดเร็กทอรี ~/bin มีอยู่เมื่อไฟล์ .bashrc ของผู้ใช้ถูกเรียกใช้งาน ดังนั้น บนระบบ Ubuntu หากเราสร้างไดเร็กทอรี ~/bin จากนั้นออกจากระบบและเข้าสู่ระบบอีกครั้ง ทุกอย่างก็ใช้งานได้