แม้ว่าบางคนจะได้รับคำตอบที่ดี แต่ฉันต้องการเพิ่มความคิด:
1) PATH จะได้รับการพิจารณาก็ต่อเมื่อการเรียกใช้งานที่เรียกใช้นั้นไม่มีองค์ประกอบของพา ธ somecommand จะถูกค้นหาใน $ PATH ./somecommand
หรือ/usr/bin/somecommand
หรือ../../bin/somecommand
เพียงแค่ใช้กฎของไดเรกทอรีไม่ใช่ PATH
หากมีไฟล์ปฏิบัติการหลายไฟล์ใน PATH ที่มีชื่อเดียวกันกับไฟล์ที่ต้องการ?
มันหยุดที่แรกที่พบอ่าน $ PATH จากซ้ายไปขวา
ไดเรกทอรีปัจจุบันรวมอยู่ในการค้นหาเมื่อมีการเรียกใช้ไฟล์หรือไม่
หากไดเรกทอรีปัจจุบันอยู่ในเส้นทางจากนั้นจะถูกค้นหา โปรดจำไว้ว่าไดเรกทอรีว่างใน PATH รวมถึงไดเรกทอรีปัจจุบัน เช่น PATH =: / usr / bin (นำหน้าว่าง) PATH = / usr / bin: (ต่อท้ายว่างเปล่า) และ PATH = / usr / bin :: / bin (ว่างตรงกลาง) ทั้งหมดจะรวมไดเรกทอรีทำงานปัจจุบันอย่างมีประสิทธิภาพ
สมมติว่ามีไฟล์ที่มีชื่อ executable.sh ในไดเรกทอรีปัจจุบัน จะใช้งานได้หรือไม่หากมีการดำเนินการ $ ไม่ได้เป็นส่วนหนึ่งของ PATH?
มันจะไม่พบมันด้วยการค้นหา PATH หาก dir ปัจจุบันไม่ได้อยู่ใน PATH จะไม่สามารถค้นหาได้ด้วยการค้นหา PATH
ที่กล่าวว่า (และขออภัยในการเพิ่มความสับสน) หากมีนามแฝงหรือฟังก์ชั่นที่ใช้คำสั่งก็จะถูกเรียกใช้ หรือถ้าเชลล์ของคุณมีที่ตั้งแคชและไฟล์สั่งการอยู่ในแคชก็อาจพบว่า ดังนั้นมันจะไม่พบใน PATH แต่อาจถูกเรียกใช้โดยวิธีอื่น
which <executable>
คำสั่งจะมีประโยชน์ในชุดข้อความนี้