":"라는 함수를 정의할 때 이 동작이 발생하는 원인은 무엇입니까?

":"라는 함수를 정의할 때 이 동작이 발생하는 원인은 무엇입니까?

다음 함수를 생성하면

function :() {
  echo "hi"
}

그런 다음 문자를 입력할 때마다 함수가 실행됩니다.입력하면서 을 클릭하기 전에 return!

이건 내 몸에 뭔가가 있어서 .zshrc그런 것 같아아니요Z 쉘을 시작하면 이런 일이 발생 zsh -f하지만 Bash에서는 발생하지 않습니다.

이 이상한 동작의 원인을 어떻게 알 수 있습니까?

답변1

내장 함수는 아무 작업 :도 수행하지 않습니다.조치 없음). zsh의 완성 코드를 포함하여 여러 곳에서 사용됩니다. 키 바인딩과 관련된 일부 코드에서 사용될 가능성이 높습니다. 함수로 이를 재정의하는 경우 함수가 여러 번 호출될 것으로 예상됩니다.

표준 명령 이름을 완전히 다른 이름으로 덮어쓰는 것은 좋지 않습니다. 하지만 자신만의 를 정의하고 싶다면 :별칭(더 길고 명확한 이름을 가진 함수)으로 만드세요. 이렇게 하면 완료 코드를 포함하여 자동 로드된 함수(옵션 autoload없이 -U명시적으로 자동 로드되는 함수 제외 - 따라서 를 사용할 때마다 를 autoload전달 -U) 에 영향을 미치지 않습니다 .

관련 정보