ディスク上のシェル/ディスプレイ機能の位置を見つける

ディスク上のシェル/ディスプレイ機能の位置を見つける

次の機能がある場合:

    #!/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

関連情報