tl; dr
declare -f foo
typeset -f foo
type -f/ whence -f/which Sind in diesem Fall nicht optimal , weil ihr Zweck die Befehlsform mit dem berichten , ist höchste Priorität , die definiert wird , geschieht mit diesem Namen (es sei denn , Sie auch angeben -a, in welchem Fall alle Befehlsformen gemeldet werden) - als spezifisch gegen Berichterstattung auf dem Operanden als Funktion .
Die -fOption wird das nicht ändern - es ist nur beinhaltet Shell - Funktionen in dem Look - up.
Aliase und Shell - Schlüsselwörter haben höhere Priorität als Shell - Funktionen, so im Fall bei der Hand, wenn ein Alias foowurde auch definiert, type -f foowürden die Bericht Alias - Definition.
Beachten Sie, dass zshAliase in Skripts standardmäßig nicht erweitern (wie auch ksh, aber nicht bash), und selbst wenn Sie Alias Erweiterung zuerst ab drehen, type -f/ whence -f/ which noch Aliase berichtet zuerst.
declare -f fooist die bessere Wahl auch in Bash - und es funktioniert auch inzsh; siehe meine Antwort für Hintergrundinformationen.