次の機能がある場合:
#!/usr/bin/env bash
function foo {
}
上記の関数は.bash_profileまたは他の場所にあります。
これを使用すると、which foo
シェルスクリプトはコマンドの場所を提供しません。
場所を見つける方法はありますか?それともgrep
最良の選択ですか?
答え1
この質問にはすでに答えがあります。ここ。したがって、この事実から2つの事実がわかります。
- ここに質問を投稿する前に、よりよく調査する必要があります(ただし、私たちは時々怠惰です)。
grep
あなたが望むことを行うより良い方法があります
したがって、PATHからソースファイルとシェル関数の行番号を次のように取得できます。この回答)
# 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
答え2
which
パスのみを検索します。 bashが実際に実行していることを確認するには、組み込みコマンドを使用してくださいtype
。
type foo