hash
bash 내장 명령입니다. 해시 테이블은 메모리에 결과를 캐싱하여 명령을 입력 할 때마다 bash
검색하지 않아도 되는 기능입니다 $PATH
. 결과를 분명히 무효화하는 이벤트 (예 : 수정 $PATH
) 에서 테이블이 지워집니다.
hash
해당 시스템 (중 당신이 느끼는 이유 당신이 필요)와 상호 작용하는 방법 명령은 단지이다.
일부 사용 사례 :
예:
[root@policyServer ~]# hash -p /lol-wut/whoami whoami
[root@policyServer ~]# whoami
Not what you're thinking
[root@policyServer ~]# which whoami
/usr/bin/whoami
[root@policyServer ~]# /usr/bin/whoami
root
[root@policyServer ~]#
외부 디렉토리에 하나의 실행 파일이있는 경우 $PATH
해당 디렉토리의 모든 것을 포함하는 대신 이름을 입력하여 실행하려는 경우 유용 할 수 있습니다 (추가 한 경우 영향을 미침 $PATH
).
별명도 일반적으로이 작업을 수행 할 수 있지만 현재 쉘의 동작을 수정하기 때문에 시작한 프로그램에는 매핑되지 않습니다. 고독한 실행 파일에 대한 심볼릭 링크가 여기에서 선호되는 옵션 일 것입니다. hash
한 가지 방법입니다.
- 파일 경로를 기억 해제하는 데 사용할 수 있습니다. 이것은 새로운 실행 파일이 이전
PATH
디렉토리 에서 팝업 되거나 mv
다른 곳으로 이동하여 bash가 파일을 찾은 것을 기억하는 마지막 위치 대신 강제로 나가서 다시 찾으려고 할 때 유용 합니다.
예:
[root@policyServer ~]# hash
hits command
1 /bin/ls
[root@policyServer ~]# cp /bin/ls /lol-wut
[root@policyServer ~]# hash
hits command
1 /bin/cp
1 /bin/ls
[root@policyServer ~]# hash -d ls
[root@policyServer ~]# ls
default.ldif newDIT.ldif notes.txt users.ldif
[root@policyServer ~]# hash
hits command
1 /bin/cp
1 /lol-wut/ls
[root@policyServer ~]#
이 cp
명령으로 인해 ls
실행 파일 의 새 버전이 초기에 표시 $PATH
되었지만 해시 테이블 제거가 트리거되지 않았습니다. 해시 테이블에서 hash -d
항목을 선택적으로 제거하는 데 사용 했습니다 ls
. Bash는 $PATH
다시 한 번 살펴 보았고 새로운 위치에서 찾았습니다 (이전의 $ PATH 이전).
이 "실행 파일의 새로운 위치 찾기 $PATH
"동작을 선택적으로 호출 할 수 있습니다 .
[root@policyServer ~]# hash
hits command
1 /bin/ls
[root@policyServer ~]# hash ls
[root@policyServer ~]# hash
hits command
0 /lol-wut/ls
[root@policyServer ~]#
해시 테이블에서 무언가를 원하고 로그 아웃 한 다음 다시 로그인 할 수있는 100 %가 아니거나 쉘에 대한 수정 사항을 유지하려는 경우 대부분이 작업을 수행하려고합니다.
오래된 매핑을 제거하려면 bash의 전체 해시 테이블을 효과적으로 제거하는 hash -r
(또는 export PATH=$PATH
) 작업을 수행 할 수도 있습니다 .
그런 작은 상황이 많이 있습니다. "가장 유용한"명령 중 하나라고 부르는지 모르겠지만 일부 사용 사례가 있습니다.