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!?!?

bash를 사용하여 Ubuntu 12.04에 있습니다. 또한 포위 공격의 경고 출력은이 질문의 목적과 관련이 없습니다. 프로그램을 찾고 호출 할 수 있는지 여부에만 관심이 있기 때문입니다.

답변:


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.