ディスク上のシェル/bash関数の場所を見つける

ディスク上のシェル/bash関数の場所を見つける

次のような関数があるとします。

    #!/usr/bin/env bash

    function foo {

    }

上記の関数は .bash_profile かどこかにあります。

これを使用すると、which fooシェル スクリプト内でのこのコマンドの場所はわかりません。

それがどこにあるのかを知る方法はありますか、それともそれがgrep最善の策でしょうか?

答え1

この質問はすでに回答されていますここしたがって、この事実から次の 2 つのことが導き出されます。

  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

関連情報