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
.
또는 를 사용하여 zsh
under 및 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
(단, 여기서의 줄번호는 두 줄씩 다르기 때문에 주의하시기 바랍니다.)