Bash 環境変数がどのファイルで定義されたか調べたい
Bash にて、export NO_PROXY=localhost
といったように、ある環境変数をどこかのファイルで設定しているのだが、どこに書いてあるか分からない、という時に、その調べ方を調べてみた。
コチラの記事に書いてある、以下のコマンドが役に立った。
$ PS4='+$BASH_SOURCE> ' BASH_XTRACEFD=7 bash -xl 7>&2
このコマンドを実行すると、bash -xl
で Bash を別に起動し、最初に読み込まれる ~/.bash_profile
などの内容を出力してくれる。この出力結果を辿っていけば、目的の環境変数をどのファイルで定義しているかが確認できるだろう。
このコマンドを実行したら $ exit
を叩き、起動した bash
から抜けておくこと。
- 参考 : PS4の設定でシェルスクリプトのデバッグが捗る
PS4
でbash -x
の出力を変えている
- 参考 : bash スクリプトの -x トレースを指定したファイルに出力する
BASH_XTRACEFD=7
でファイル・ディスクリプタを変更している
- 参考 : シェルの入出力制御あれこれ
7>&2
で標準エラー出力に混ぜ込んで表示させているようだ
この結果をうまいことファイルに書き出したりできないかなーと思ったのだが、どうも上手く行かなかったので断念。
でもとりあえずは profile
系のファイルが最初に呼ばれているはずだから、それらのファイルの順序・所在・内容が読み取れればあとは自力で環境変数の宣言場所を探し出せるかな、と思う。