예를 들면 다음과 같습니다.
$ node
-bash: /usr/local/bin/node: No such file or directory
$ foo
-bash: foo: command not found
차이점이 뭐야? 두 경우 모두, node
및 foo
유효하지 않은 명령은, 그러나 찾을 수 없습니다 단지 유닉스처럼 보인다 node
바이너리를? 예를 들어 프로그램을 제거 할 때 node
이를 정리할 수있는 방법이 있습니까?
$ node
-bash: node: command not found
편집하다:
type
명령 결과 :
$ type node
node is hashed (/usr/local/bin/node)
$ type foo
-bash: type: foo: not found
답변
이제 그 때문에 bash
명령 위치를 기억하는에 저장 해시 테이블.
을 제거한 후에도 node
해시 테이블이 지워지지 않고 bash
여전히을 ( node
를 /usr/local/bin/node
) 찾아서 PATH
조회를 건너 뛰고 /usr/local/bin/node
를 사용하여 직접 호출 한다고 생각 execve()
합니다. 언제부터 node
더 이상 존재하지 않습니다, execve()
반환 ENOENT
오류가 그런 파일이나 디렉토리를 의미합니다, bash
당신에게 그 오류를보고했습니다.
에서가 bash
, 당신은 해시 테이블에서 항목을 제거 할 수 있습니다 :
hash -d node
또는 전체 해시 테이블을 제거하십시오 ( 모든 POSIX 셸에서 작동 ).
hash -r
답변
Ubuntu Linux 16.04에서 “이러한 파일이나 디렉토리가 없음”은 현재 작업 디렉토리를 전환해야 함을 의미하고 “명령을 찾을 수 없음”은 apt-get install xxxyyy_zzz를 사용하여 문제를 해결해야 함을 의미합니다.