เมื่อใดที่จะทำการปรับปรุงไฟล์ executables ใน $ PATH ด้วย bash?


9

Bash shell มีคำสั่งในตัวhash -rเพื่อรีเซ็ต$PATHแคชภายในสำหรับไฟล์เรียกทำงาน

เมื่อใดจึงจำเป็นต้องใช้คำสั่งนี้

ที่เกี่ยวข้อง: วิธีการทำใหม่ executables ใน $ PATH ด้วย bash


1
... ตัวอย่างเช่นเมื่อคุณมีโปรแกรมที่คุณเพิ่งคอมไพล์ใหม่ ... ด้วยชื่อเดียวกัน ... อาจอยู่ในเส้นทางที่แตกต่าง ...
Hastur

@Hastur: ฉันไม่แน่ใจว่าคุณแสดงความคิดเห็นเป็นคำถามหรือคำสั่ง หากมีคำสั่งกรุณาโพสต์เป็นคำตอบ
kevinarpe

คำตอบ:


7

hashเป็นคำสั่งในตัวของ bash ตารางแฮชเป็นคุณลักษณะของ bash ที่ป้องกันไม่ให้ค้นหา $ PATH ทุกครั้งที่คุณพิมพ์คำสั่งโดยการแคชผลลัพธ์ในหน่วยความจำ

ดังนั้นเมื่อข้อมูลแคช / เก็บไว้ไม่ได้รับการปรับปรุงอีกต่อไปหรือถูกต้องคุณอาจต้องรีเซ็ต

อ่านเพิ่มเติมเกี่ยวกับคำตอบนี้ดีบน Unix stackexchange


4

หากก่อนหน้านี้คุณเรียกใช้โปรแกรมในการเรียกใช้เชลล์จากนั้นติดตั้งเวอร์ชันอื่นในไดเรกทอรีก่อนหน้าใน$PATHรายการค้นหาของคุณคุณต้องรีเซ็ตแฮชเพื่อให้โปรแกรมค้นหาในตำแหน่งใหม่ มิฉะนั้นจะใช้แคชเพื่อค้นหาโปรแกรมในตำแหน่งเดิม

คุณต้องรีเซ็ตแฮชหากมีการติดตั้งโปรแกรมใน 2 ไดเรกทอรีในของคุณ$PATHและคุณลบสำเนาออกจากตำแหน่งก่อนหน้าหลังจากเรียกใช้งาน มิฉะนั้นจะพยายามค้นหาในตำแหน่งนั้นและรายงาน "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" (โดยส่วนตัวแล้วฉันคิดว่าควรล้างแฮชโดยอัตโนมัติและทำการค้นหาแบบเต็มเมื่อเกิดเหตุการณ์นี้ขึ้น แต่จะไม่เกิดขึ้นเมื่อฉันพยายาม )

โปรดทราบว่าคุณไม่จำเป็นต้องรีเซ็ตแฮชจริงทั้งหมดคุณสามารถใช้:

hash name

เพื่อบังคับให้อัพเดตรายการแคชสำหรับชื่อนั้นหรือ:

hash -d name

เพื่อลบรายการแคชนั้น สิ่งนี้จะปล่อยรายการแคชอื่น ๆ ทั้งหมดไว้ตามลำพัง

คุณไม่จำเป็นต้องใช้hash -rหลังจากแก้ไข$PATHมันจะถูกรีเซ็ตโดยอัตโนมัติเมื่อเสร็จสิ้น


จุดดีเกี่ยวกับชิ้นส่วนติดตั้งและจุดในเส้นทางของคุณ
kevinarpe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.