답변:
함수 정의를 얻으려면 :
type -a function_name
whence -f function_name
의zsh
foo라는 함수가 있다고 가정하면 아래 명령은 함수 정의의 위치를 가져옵니다. 즉 함수가 정의 된 파일의 이름과 함수가 해당 파일 내에 정의 된 행 번호를 가져옵니다. .
# Turn on extended shell debugging
shopt -s extdebug
# Dump the function's name, line number and fully qualified source file
declare -F foo
# Turn off extended shell debugging
shopt -u extdebug
필자의 경우 이러한 명령의 출력은 다음과 같습니다.
foo 32 /source/private/main/developer/cue.pub.sh
whereisfunc() {shopt -s extdebug;declare -F $1;shopt -u extdebug}
shopt
하여 현재 쉘의 상태를 변경하지 않고 효과를 현지화하는 것이 좋습니다 . whichfunc () ( shopt -s extdebug; declare -F "$1"; )
( (...)
대신에 사용에주의하십시오 {...}
).
bash -x
bash가 시작될 때 실행중인 것을 덤프하여 더 쉽게 추적 할 수 있습니다. 새로 열린 쉘을 종료하는 것을 잊지 마십시오.
script out.txt bash -x
(다시 잊지 말고 exit
)를 사용하십시오.
다른 방법으로, 요즘 더 간단하게 찾을 수 있습니다.
which <functionname>
(이것은 또한 별칭인지 스크립트인지를 보여 주지만 별칭의 출처를 추적하지는 않습니다)
which
BSD 또는 Mac의 별칭에 대한 정보를 제공 하지 않는다고 생각 합니다. 또한이 질문은 기능에 관한 것이며 기능에 which
대한 정보는 제공하지 않습니다.