내 경로에 있는 프로그램인데도 Bash가 프로그램을 찾지 못합니다.

내 경로에 있는 프로그램인데도 Bash가 프로그램을 찾지 못합니다.

내가 가는 길에는 계획이 있다. 지정된 전체 경로를 사용하여 실행되면 프로그램이 실행됩니다. 그런데 이름만으로는 프로그램을 실행하면 프로그램을 찾을 수 없습니다.

본질적으로 나는 다음 출력이 어떻게 가능한지, 그리고 전체 경로를 지정하지 않고도 내 프로그램을 실제로 찾을 수 있도록 이를 수정하는 방법을 이해하고 싶습니다.

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를 사용하고 있습니다. 또한 프로그램을 찾고 호출할 수 있는지 여부에만 관심이 있으므로 siege의 경고 출력은 이 질문의 목적과 관련이 없습니다.

답변1

여기서 출력을 참고하세요.

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

Bash는 경로에서 이전에 발견된 실행 파일의 내부 해시를 유지합니다. 이 경우에는 /usr/bin/siege가 한때 실행 파일을 가지고 있었다는 세부 정보가 있으며 다시 검색하지 않기 위해 해당 경로를 재사용합니다. 다음과 같이 포위 경로를 수동으로 다시 해시하도록 bash에 지시해야 합니다.

hash siege

모든 해시 위치를 지울 수도 있습니다.

hash -r

답변2

이 문제의 또 다른 원인은 실행 파일 경로가 실행 파일 경로가 아닌 경로에 있기 때문일 수 있습니다.디렉토리 포함.

그러니 넣지 마세요

/home/myDir/theExecutable

경로에 이것을 추가하십시오.

/home/myDir

관련 정보