今日これを行う必要があり、 whence -v
が見つかりました 関数定義を含むファイルを出力します。
$ whence -v function_name
function_name is a shell function from /path/to/file
まず、関数は function
なしで定義できます キーワードなので、より良い検索になります
grep 'cp()' .*
.zshrc
などのファイルを検索します と .profile
などなど。それでも何も見つからない場合は、zsh
によってロードされたさまざまなファイルを確認することもできます。 .これらは man zsh
の最後にリストされています :
FILES
$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
${TMPPREFIX}* (default is /tmp/zsh*)
/etc/zsh/zshenv
/etc/zsh/zprofile
/etc/zsh/zshrc
/etc/zsh/zlogin
/etc/zsh/zlogout (installation-specific - /etc is the default)
デフォルトでは $ZDOTDIR
$HOME
である必要があります .したがって、このコマンドは問題のあるファイルを見つけるはずです:
grep 'cp()\|cp ()' ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin /etc/zsh/zshenv \
/etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin
\|
を追加しました 関数名と関数自体の間にスペースを入れることもできるためです。最後に、@Dennis は、function
を使用する場合は括弧も省略できると指摘しています。 キーワード。したがって、さらに安全にするには、次のようにします。
grep -E 'function cp|cp *\(\)' ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin \
/etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin
zsh の新しいバージョン (5.4 以降、コミット 34f70c5
に追加) ) $functions_source
をサポート zsh/parameter
の一部としての配列 モジュール (ドキュメント:man zshmodules
):
functions_source
この読み取り専用の連想配列は、有効な関数の名前を関数のソースを含むファイルの名前にマップします。
すでにロードされているか、絶対パスで自動ロード用にマークされているか、またはパスが「functions -r
」で解決されている、自動ロードされた関数の場合 '、これはオートロード用に見つかったファイルで、絶対パスに解決されます。
スクリプトまたはソース ファイルの本体内で定義された関数の場合、これはそのファイルの名前です。この場合、これはそのファイルに最初に使用された正確なパスであり、相対パスである可能性があります。
対話型プロンプトで定義された関数や、パスがまだ解決されていない autoload 関数を含む、その他の関数の場合、これは空の文字列です。ただし、関数が存在する限り、ハッシュ要素は定義済みとして報告されます。このハッシュのキーは、$funcions
のキーと同じです。 .
だから、あなたはできる
echo $functions_source[cp]