Bash shell มีคำสั่งในตัวhash -r
เพื่อรีเซ็ต$PATH
แคชภายในสำหรับไฟล์เรียกทำงาน
เมื่อใดจึงจำเป็นต้องใช้คำสั่งนี้
ที่เกี่ยวข้อง: วิธีการทำใหม่ executables ใน $ PATH ด้วย bash
Bash shell มีคำสั่งในตัวhash -r
เพื่อรีเซ็ต$PATH
แคชภายในสำหรับไฟล์เรียกทำงาน
เมื่อใดจึงจำเป็นต้องใช้คำสั่งนี้
ที่เกี่ยวข้อง: วิธีการทำใหม่ executables ใน $ PATH ด้วย bash
คำตอบ:
hash
เป็นคำสั่งในตัวของ bash ตารางแฮชเป็นคุณลักษณะของ bash ที่ป้องกันไม่ให้ค้นหา $ PATH ทุกครั้งที่คุณพิมพ์คำสั่งโดยการแคชผลลัพธ์ในหน่วยความจำ
ดังนั้นเมื่อข้อมูลแคช / เก็บไว้ไม่ได้รับการปรับปรุงอีกต่อไปหรือถูกต้องคุณอาจต้องรีเซ็ต
อ่านเพิ่มเติมเกี่ยวกับคำตอบนี้ดีบน Unix stackexchange
หากก่อนหน้านี้คุณเรียกใช้โปรแกรมในการเรียกใช้เชลล์จากนั้นติดตั้งเวอร์ชันอื่นในไดเรกทอรีก่อนหน้าใน$PATH
รายการค้นหาของคุณคุณต้องรีเซ็ตแฮชเพื่อให้โปรแกรมค้นหาในตำแหน่งใหม่ มิฉะนั้นจะใช้แคชเพื่อค้นหาโปรแกรมในตำแหน่งเดิม
คุณต้องรีเซ็ตแฮชหากมีการติดตั้งโปรแกรมใน 2 ไดเรกทอรีในของคุณ$PATH
และคุณลบสำเนาออกจากตำแหน่งก่อนหน้าหลังจากเรียกใช้งาน มิฉะนั้นจะพยายามค้นหาในตำแหน่งนั้นและรายงาน "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" (โดยส่วนตัวแล้วฉันคิดว่าควรล้างแฮชโดยอัตโนมัติและทำการค้นหาแบบเต็มเมื่อเกิดเหตุการณ์นี้ขึ้น แต่จะไม่เกิดขึ้นเมื่อฉันพยายาม )
โปรดทราบว่าคุณไม่จำเป็นต้องรีเซ็ตแฮชจริงทั้งหมดคุณสามารถใช้:
hash name
เพื่อบังคับให้อัพเดตรายการแคชสำหรับชื่อนั้นหรือ:
hash -d name
เพื่อลบรายการแคชนั้น สิ่งนี้จะปล่อยรายการแคชอื่น ๆ ทั้งหมดไว้ตามลำพัง
คุณไม่จำเป็นต้องใช้hash -r
หลังจากแก้ไข$PATH
มันจะถูกรีเซ็ตโดยอัตโนมัติเมื่อเสร็จสิ้น