Bash ไม่พบโปรแกรมแม้ว่าจะอยู่ในเส้นทางของฉัน


26

ฉันมีโปรแกรมบนเส้นทางของฉัน โปรแกรมรันเมื่อเรียกใช้งานโดยระบุพา ธ แบบเต็ม แต่ไม่พบโปรแกรมเมื่อฉันรันด้วยชื่อของมัน

โดยพื้นฐานแล้วฉันต้องการเข้าใจว่าผลลัพธ์ด้านล่างเป็นไปได้อย่างไรและจะแก้ไขอย่างไรเพื่อให้โปรแกรมของฉันสามารถพบได้โดยไม่ต้องระบุเส้นทางแบบเต็ม:

root:/usr/local/bin# ./siege
****************************************************
siege: could not open /usr/local/bin/etc/siegerc
run 'siege.config' to generate a new .siegerc file
****************************************************
root:/usr/local/bin# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root:/usr/local/bin# siege
bash: /usr/bin/siege: No such file or directory
root:/usr/local/bin# wtf!?!?

ฉันใช้ Ubuntu 12.04 โดยใช้ bash นอกจากนี้โปรดทราบว่าผลลัพธ์ของคำเตือนจากการล้อมนั้นไม่เกี่ยวข้องกับวัตถุประสงค์ของคำถามนี้เพราะฉันสนใจเพียงแค่ว่าจะสามารถค้นหาและเรียกใช้โปรแกรมได้หรือไม่

คำตอบ:


38

บันทึกผลลัพธ์ที่นี่:

root:/usr/local/bin# siege
bash: /usr/bin/siege: No such file or directory

Bash รักษาแฮชภายในของไฟล์เรียกทำงานที่พบก่อนหน้านี้ในพา ธ ของคุณ ในกรณีนี้มีรายละเอียดว่าในครั้งเดียวมีการปฏิบัติการที่ / usr / bin / siege และนำเส้นทางนั้นกลับมาใช้เพื่อหลีกเลี่ยงการค้นหาอีกครั้ง คุณต้องบอก bash เพื่อทำการฟื้นฟูเส้นทางด้วยตัวเองดังนี้:

hash siege

คุณยังสามารถล้างตำแหน่งที่แฮชทั้งหมด:

hash -r

0

สาเหตุของปัญหานี้ก็อาจเป็นไปได้ว่าเส้นทางไปปฏิบัติการของตัวเองอยู่บนเส้นทางแทนการปฏิบัติการของไดเรกทอรีที่มี

ดังนั้นแทนที่จะวาง

/home/myDir/theExecutable

บนเส้นทางเพียงเพิ่มสิ่งนี้

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