概要
/etc/profileに定義したはずの環境変数がユーザごとに切り替わるトラブルが起きた。色々調査した記録。
結論
- 環境変数の設定箇所を確認するときは外部ファイルを読み込んでないか確認しよう
- 環境変数の定義方法をプロジェクトとして統制しよう
想定
EXAMPLE_USER1
EXAMPLE_USER2
どちらでも環境変数EXAMPLE_VALIABLE
の値はCORRECT_EXAMPLE_VALUE
であるはず
とりあえず原因箇所を特定しよう
まずはファイルを見る
ユーザごとに設定値が変わってしまうなら十中八九.bash_profileか.bashrcに定義しているはず
cat .bash_profile |grep EXAMPLE_VALIABLE
cat .bashrc |grep EXAMPLE_VALIABLE
→どっちも定義を上書きしてはいなさそう?
状況を確認しよう
su - EXAMPLE_USER1
echo $EXAMPLE_VALIABLE
⇒CORRECT_EXAMPLE_VALUE
su EXAMPLE_USER1
echo $EXAMPLE_VALIABLE
⇒CORRECT_EXAMPLE_VALUE
su - EXAMPLE_USER2
echo $EXAMPLE_VALIABLE
⇒INCORRECT_EXAMPLE_VALUE
su EXAMPLE_USER2
echo $EXAMPLE_VALIABLE
⇒CORRECT_EXAMPLE_VALUE
つまり、EXAMPLE_USER2の環境変数設定を読み込んだときに環境変数が切り替わってしまうように見える
調査しよう
EXAMPLE_USER2の環境変数設定を読み込んだときに環境変数が切り替わってしまう
のであれば、疑わしいのはEXAMPLE_USER2の.bash_profileか.bashrc
先輩「sourceしてんじゃない?」
cat .bash_profile |grep source
source /hoge/fuga/EXTRANAL_FILE
cat /hoge/fuga/EXTRANAL_FILE|grep EXAMPLE_VALIABLE
export EXAMPLE_VALIABLE=INCORRECT_EXAMPLE_VALUE
⇒これだ!!
反省
- 環境変数はprofile系のファイルに直接書かれていると思い込んでいたこと
- ファイルや定義方法がプロジェクトとして統制されておらず、各チーム任せになっていること