나는 zsh의 명령 자동 수정 기능을 좋아합니다. 그러나 여기에는 성가신 기능이 있습니다. 때로는 명령을 실행하려고 시도하고 존재하지 않는 것을 찾아 설치한 다음 다시 실행하려고 시도하지만 zsh는 여전히 동일한 수정을 원합니다. Zsh는 명령 경로의 해시를 보존하고 자동 수정을 수행할 때 해시를 초과하지 않기 때문에 이를 수행합니다. 명령을 설치한 후 수정 하면 n
명령이 실행되지만 n
실행하려고 할 때마다 다시 말해야 하거나 hash
기본 제공 명령을 호출하여 실행 중인 각 인스턴스에서 명령 해시를 업데이트해야 합니다.
나는 zsh가 명령 경로의 해시를 보존하기를 원하며 자동 수정을 보존하고 싶습니다(즉, 평소와 같이 명령 이름을 입력하고 키를 누르면 Enter명령이 존재하지 않는 경우 zsh가 수정 사항을 제안합니다). 다만, "명령어가 존재하지 않는다"는 것은 $path
해당 명령이 존재하지 않는다는 의미라기보다는 현재로서는 해당 명령이 열려 있지 않다는 의미가 아닐까 싶습니다 .
재현 단계:
$ mkdir /tmp/test
$ cp /bin/true /tmp/test/wibble
$ PATH=/tmp/test:/bin zsh -f -o correct
darkstar% wobble
zsh: correct 'wobble' to 'wibble' [nyae]? a
darkstar% cp /tmp/test/{wibble,wobble}
darkstar% wobble
zsh: correct 'wobble' to 'wibble' [nyae]? n
원하는 동작: wobble
있을 경우 이를 수정하라는 메시지를 표시하지 않습니다. 어떻게 해야 하나요?
답변1
말한 바와 같이@user1934428, 를 실행하여 해시 테이블을 명시적으로 다시 생성할 수 있습니다 rehash
. 이 작업을 수동으로 수행하지 않으려면 다음 항목에 입력하세요 zshrc
.
zstyle ":completion:*:commands" rehash 1
zstyle
자세한 내용은 매뉴얼 페이지에서 찾을 수 zshmodule
있으며 스타일 자체는 에 문서화되어 있습니다 zshcompsys
.