bash関数を定義するファイルを見つける方法は?

bash関数を定義するファイルを見つける方法は?

bash関数が定義されたファイルを見つける方法がわかりません(__git_ps1私の場合)。

declaretype試してみましたが、whichソースファイルを教えてくれませんでした。declareファイル名と行番号を印刷できることをどこかで読みましたが、方法は説明されていません。helpページdeclareには何も言いません。

この情報をどのように取得できますか?

ベストアンサー1

関数を実行する準備ができたら、set -xトレースの実行とPS4変数の設定で情報を取得できます。

  1. bashを起動するか、--debuggerそれを使用して追加のshopt -s extdebugデバッグ情報を記録します。

  2. Set PS4、ソース行を表示するために追跡すると、「ヒント」が印刷されます。

  3. 追跡をオンにします。

  4. その後、関数を実行し、各行ごとに関数のファイル名を取得できます。

  5. set +xトレースをオフにするために使用されます。

したがって、この場合は以下を実行します。

bash --debugger
PS4='+ ${BASH_SOURCE[0]} '
set -x ; __git_ps1 ; set +x

おすすめ記事