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
変数(出力のプロンプト変数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
(ただし、ここの行番号は2行ずつ異なりますのでご注意ください。)