2017-03-16 1 views
1

가 나 한테 무슨 퍼즐 것이있다 ('유형에서 mkdir'에 대해 서로 다른 출력)이 나는이 두 라이너 스크립트 실행 다른 출력 얻고있다 : (여기 SciTE 출력 패널 출력) SciTE 내에서Bash 'someCmd'형식 : '해시'를 의미합니까?

help | head -n1 
type mkdir 

을 :

GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu) 
mkdir is /bin/mkdir 

하고 (여기에 터미널 출력) 터미널 창 내에서 는 :

GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu) 
mkdir is hashed (/bin/mkdir) 

은 어떻게 오는가 그 같은 쉘에 의해 실행 동일한 스크립트 동일한 출력을 제공하지 않습니까?

답변

2

차이점은 상황이다

처음 bash이 파일명에 의해 주어진 세션 외부 유틸리티 실행 전용 (성공인지의 여부)가 빠르게 다시 실행 전체 경로를 기억 나중에 ($PATH 변수 에 다시 나열된 모든 디렉토리에서 유틸리티를 찾을 필요가 없으므로).

이 기억하는 (캐싱)

해시 을 불러 hash을 내장 통해 암시 적으로 발생한다. mkdir 적어도 한 번 실행 한 후

mkdir is /bin/mkdir 

, type mkdir 다음보고 :

mkdir is hashed (/bin/mkdir) 

따라서, mkdir 전에 주어진 세션에서을 실행, type mkdir 반환

당신은라고 말할 수 있습니다.은 기억 된 모든 경로를 hash -r 또는 "hash -d <name>"으로 선택적으로 "잊어 버리십시오. hash은 현재 해시 된 모든 경로와 적중 ​​횟수를 인쇄합니다 (help hash 참조).

관련 문제