次のような関数があるとします。
#!/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