Bash環境変数はどこで初期化されますか?

Bash環境変数はどこで初期化されますか?

私が実行したとき:

echo $PYTHONPATH

コマンドラインから次の出力を取得します。

/home/nehal/catkin_ws/devel/lib/python2.7/dist-packages:/opt/ros/kinetic/lib/python2.7/dist-packages:/home/nehal/anaconda3/lib/python3.6/site-package‌​s:/home/nehal/anaconda3/lib/python3.6/dist-package‌​s:/home/nehal/anaconda3/lib/python3.6/dist-package‌​s:/home/nehal/anaconda3/lib/python3.6/dist-package‌​s:/home/nehal/anaconda3/lib/python3.5/dist-package‌​s:/home/userx/anaconda3/lib/python3.5/dist-package‌​s:/home/userx/anaconda3/lib/python3.5/dist-package‌​s:/home/userx/anaconda3/lib/python3.5/dist-package‌​s

ファイルを確認してみるとセットが1つ.bashrcだけであることがわかりました。PYTHONPATH

export PYTHONPATH="/home/nehal/anaconda3/lib/python3.6/site-package‌​s:$PYTHONPATH"

私も確認してみましたが、.profileどこでも見つかりません/etc/environmentでした。/etc/profilePYTHONPATH

私の質問は、上記の追加パスがどこから来るのかです。

答え1

どのファイルが開いているかを追跡して、bashがどのファイルをインポートしているかを確認できます。

strace -e open bash -l

これにより、bashが開こうとしているすべてのファイルが印刷されます(そのほとんどは無視できるCライブラリです)。これはどこを見るべきかについてのヒントを与えるでしょう。 (Bashの「-l」オプションを使用するには、「ログイン」シェルで実行する必要があります。これにより、通常bashはより多くの起動ファイルを解析します。)

答え2

起動すると、「bash」は複数のファイルから設定をロードします。ほとんどは通常、「/ etc」ディレクトリのサブディレクトリにあります。したがって、次のコマンドを実行して「PYTHONPATH」を含むすべてのファイルを見つけます。

grep -R PYTHONPATH /etc 2>/dev/null

関連情報