Wenn ich eine Funktion wie diese habe:
#!/usr/bin/env bash
function foo {
}
und die obige Funktion befindet sich in .bash_profile oder irgendwo.
Wenn ich which foo
es verwende, wird mir der Speicherort dieses Befehls im Shell-Skript nicht angezeigt.
Gibt es für mich eine Möglichkeit herauszufinden, wo es sich befindet, oder ist das grep
meine beste Wette?
Antwort1
Diese Frage wurde bereits beantwortetHierAus dieser Tatsache lassen sich zwei Dinge ableiten:
- Sie sollten besser recherchieren, bevor Sie Ihre Frage hier posten (aber na ja, wir sind alle von Zeit zu Zeit faul).
- Es gibt einen viel besseren Trick, als
grep
zu tun, was Sie wollen
So können Sie eine Quelldatei und eine Zeilennummer einer Shell-Funktion in Ihrem PATH wie folgt erhalten: (Quelle:diese Antwort)
# 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
Antwort2
which
durchsucht nur den Pfad. Um zu sehen, was Bash wirklich ausführt, verwenden Sie den integrierten Befehl type
:
type foo