私はプロプライエタリサーバーを使用しています。私はそれについて何も知りません。サーバーを記述するために日常的に使用するbash関数がありますが、その関数を使用するbashスクリプトを作成すると、機能しません。
そこで、スクリプトに元のソースファイルをロードしたいと思います。「ブルートフォース」検索アプローチ以外に、ソースファイルの場所を特定する方法はありますか?私がそうするならば、私type -a thefunction
は定義を見ることができますが、それがどこから来たのかはわかりません。
この情報はすぐには入手できません。デバッグ (set -x) を有効にして対話型ログイン シェルを起動すると、役立つ場合があります。これにより、ソース プロセスが詳細に表示されます。
bash -ilx
このような bash シェルを開始すると、次のように表示されます。
+++ . /etc/bash_completion.d/dd
++++ have dd
++++ unset -v have
++++ PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin:/usr/local/sbin
これは、いつ. /etc/bash_completion/dd が供給され、PATH が変更されました (または、同じ値に再設定された可能性があります)。
http://wiki.bash-hackers.org/scripting/debuggingtips/の「Xtrace をより便利にする」セクションを確認してください。
スクリプトの一番上の近くに次を追加しようとしましたが、関数呼び出しのファイル名/行番号が表示されているようです。
set -x
export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
CentOS 6.2 ホストで bash 4.1.2 をテストしました