zsh에서 precmd_functions는 어디에 정의되어 있나요?

zsh에서 precmd_functions는 어디에 정의되어 있나요?

zsh에서 입력 set하면 precmd_functions=(_precmd_function_dostuff _precmd_function_domore).

_precmd_function_dostuff및 정의는 어디에 있습니까 _precmd_function_domore(즉, 파일에 정의되어 있습니까? 어떤 파일에 있습니까?)?

및 의 정의를 보기 위해 입력할 수 있지만 functions해당 정의가 어디에 정의되어 있는지는 알 수 없습니다._precmd_function_dostuff_precmd_function_domore

답변1

zsh 5.3 이상에서는

type _precmd_function_domore

다음과 같은 것을 반환해야합니다

_precmd_function_domore is a shell function from /usr/local/etc/zshrc.d/80-PetaLinux

버전 5.4 이상의 경우 zsh다음을 사용할 수도 있습니다.

echo $functions_source[_precmd_function_domore]

zsh이 옵션을 사용하여 실행 하면 xtrace(사용된 경우 zsh -x) 실행하는 모든 명령을 보여주는 디버그 정보를 stderr에 기록합니다(함수 정의는 아님). 이 $PS4변수(output에 대한 프롬프트 변수 xtrace, 참고자료 참조 info zsh PS4)를 수정하여 실행하는 각 명령, 파일 및 읽는 각 줄에 대한 자세한 정보를 제공할 수 있습니다.

PS4='+%x:%I> ' zsh -x 2> >(grep precmd_func)

새로운 zsh 대화형 셸 인스턴스가 실행되고 stderr은 grep을 통해 필터링되어 precmd_func.

또는 를 사용하여 zshunder 및 in 함수를 호출하여 _precmd_function_domore함수 정의를 읽는 위치를 확인할 수 있습니다.xtrace%x:%I$PS4

$ grep -n precmd ~/.zshrc
192:precmd_foo() echo foo
$ (PS4='+%x:%I> '; set -x; precmd_foo)
+zsh:2> precmd_foo
+/home/stephane/.zshrc:194> echo foo
foo

(단, 여기서의 줄번호는 두 줄씩 다르기 때문에 주의하시기 바랍니다.)

관련 정보