curl http://npmjs.org/install.sh | sudo sh
이번에는 dir 에서 "trust" 설치 스크립트를 실행했습니다 /
.
$ which npm
/usr/local/bin/npm
$ npm
bash: /home/steven/local/bin/npm: No such file or directory
$ echo $PATH
/home/steven/local/bin:/home/steven/local/bin:/home/steven/local/bin:/home/steven/local/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
$ ls /home/steven/local/bin
node node-waf
$ ls /usr/local/bin
node node-waf npm npm_g npm-g
어딘가의 일부 스크립트가 내 를 오염시키고 있는 것 같습니다 $PATH
. 제가 궁금한 것은 해당 bash
프로그램이 찾는 첫 번째 디렉토리에서 프로그램을 찾지 못하면 계속 찾는 것 아닌가요 $PATH
? 안에서 찾을 수 있어야 합니다 /usr/local/bin
!
npm
사실 일만 하고 싶은 마음은 없는 것 같아요. 약간 오래된 우분투를 로드해서 다시 시도해 볼 것 같아요...
답변1
하나가 있고 /usr/local/bin/npm
쉘이 해당 캐시를 기억할 수도 있습니다. 당신은 할 수캐시 지우기사용 hash -d npm
. 캐시는 셸 인스턴스 내에서 공유되지 않으므로 문제가 지속되지 않습니다.
의 출력이 which
쉘이 수행하는 작업과 일치하지 않는 이유는 which
외부 프로그램이므로 bash의 캐시를 공유하지 않기 때문입니다. 대신 이것을 사용하면 type
쉘에 내장되어 있으므로 더 안정적입니다.
답변2
방금 배웠기 때문에 운이 좋다고 생각할 수 있습니다.가장 간단한 방법, 변수 앞에 추가 바이너리 디렉터리를 배치하면 안 됩니다 PATH
. 귀하의 경우 제정신 PATH
변수는 다음과 같아야합니다
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/steven/local/bin:/home/steven/local/bin:/home/steven/local/bin:/home/steven/local/bin
그러나 실제로 오류를 일으키는 문제는 실제로 PATH
문제가 아닙니다.npm
별칭이 지정될 수 있는 명령. 이에 대해 알아보려면 다음을 입력하세요.
type npm
/usr/local/bin/npm
또 다른 옵션은 이것이 단지 깨진 심볼릭 링크일 뿐이 라는 것입니다 /home/steven/local/bin/npm
(그러나 위의 명령을 사용하여 알 수도 있습니다).