시스템이 파일을 검색하는 경로는 어떻게 결정됩니까?

시스템이 파일을 검색하는 경로는 어떻게 결정됩니까?

나는 그것을 원한다새로운 프로젝트 관리일하다. 그 과정에서 두 가지 버전을 설치한 것 같습니다. 하나는 ~/bin에 설치된 손상된 버전이고 다른 하나는 방금 컴파일하고 실행 make install하여 /usr/local/bin/npm.

그래서 전체 ~/bin 폴더를 ~/old/bin으로 옮겼습니다. 하지만 npm~/bin에서 시스템 검색을 실행하면 다음과 같습니다.

$ which npm
/usr/local/bin/npm
$ alias npm
-bash: alias: npm: not found
$ npm
-bash: /home/ubuntu/bin/npm: No such file or directory
$ echo $PATH
/home/ubuntu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
$

Ubuntu가 npm을 찾는 이유는 무엇입니까 ~/bin/npm? 우분투 11.10을 사용하고 있습니다. 이 문제가 우분투에만 해당되는지는 모르겠습니다. 필요한 경우 askubuntu로 이동할 수 있습니다.

PATH에서 ~/bin을 볼 수 있지만, 내가 아는 한 그것은 npm이 ~/bin에 존재하는 경우에만 그것을 사용한다는 것을 의미합니다... 그런데 bash는 왜 거기에서 구체적으로 보라고 고집합니까? /usr/local/bin/npm명령이 이를 찾았지만 왜 찾지 못합니까 which?

답변1

이전에 알려진 실행 파일 위치가 셸에 의해 해시되었을 수 있습니다. 셸 캐시를 재설정하면 hash -r문제가 해결됩니다.

전체 캐시를 재설정하지 않으려면 npm사용된 개별 항목을 삭제할 수 있습니다 hash -d npm.

관련 정보