การติดตั้งหลายรายการและทำความเข้าใจกับ $ PATH


17

ฉันมี Git รุ่นเก่ากว่าติดตั้งอยู่ที่:

/usr/bin/

ฉันเพิ่งดาวน์โหลดเวอร์ชันที่ใหม่กว่าไปที่:

/usr/local/bin

เมื่อฉันพิมพ์:

which git

ฉันได้รับตำแหน่งของเวอร์ชั่นเก่า ฉันเชื่อว่านี่เป็นเพียงเพราะ / usr / bin / ปรากฏขึ้นก่อน / usr / local / bin ในตัวแปร $ PATH ของฉันและดังนั้นรุ่นที่เก่ากว่าของ git คือ 'พบ' ก่อน

เพื่อทดสอบสิ่งนี้ฉันเปลี่ยนชื่อ git รุ่นเก่าเป็น "git_old" ตอนนี้เมื่อฉันพิมพ์:

which git

ฉันได้รับตำแหน่งของเวอร์ชั่นใหม่กว่าที่คาดไว้ แต่เมื่อฉันพิมพ์:

git --version

ฉันได้รับข้อผิดพลาดต่อไปนี้:

-bash: /usr/bin/git: No such file or directory

ฉันแค่สงสัยว่าทำไมคอมพิวเตอร์ของฉันถึงกลับไปมองหาที่ตั้งเดิมของ Git?

คำตอบ:


30

Bash แคชพา ธ เต็มไปยัง executables เพื่อที่จะได้ไม่ต้องมองผ่าน$PATHทุกครั้ง

คุณสามารถดูสิ่งที่อยู่ในแคชโดยใช้hashคำสั่ง:

deltik@node51 [~]$ hash
hits    command
   1    /usr/bin/git

แคชนี้สามารถล้างได้ด้วยhash -r:

deltik@node51 [~]$ hash -r
deltik@node51 [~]$ hash
hash: hash table empty

แหล่งข้อมูลเพิ่มเติม


2
ฉันไม่เคยรู้เรื่องนี้เลย
djsmiley2k ในความมืด

1
กระสุนอื่น ๆ ส่วนใหญ่ทำสิ่งเดียวกัน แต่พวกมันไม่ได้ใช้hash -rเพื่อโหลดแคช นักร้องเช่น SSH ใช้rehashเป็นคำสั่งแทน
Moshe Katz

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