質問: 環境変数がどこから来たかを判断する方法は? 少し前にセットアップしたlinuxインスタンスがあります。起動してrootとしてログインすると、設定した環境変数がいくつかありますが、それらがどこから来たのか思い出せない、またはどこから来たのかわかりません。 確認しました~/.bash_profile、/etc/.bash_rc、およびすべての起動スクリプト。 findとgrepを実行しても無駄に終わりました。 当たり前のところを探すのを忘れているような気がします。これを理解するためのトリックはありますか?
回答: set -xを.profileまたは.bash_profileに入れると、後続のすべてのシェルコマンドが標準エラーに記録され、そのうちの1つがこれらの変数を設定しているかどうかを確認できます。 set -xを/etc/profileの先頭に配置して、トレースすることもできます。出力は非常に冗長になる可能性があるため、exec 2>/tmp/profile.logなどのファイルにリダイレクトすることをお勧めします。システムがpamを使用している場合は、pam_envまたは/etc/pam.confで/etc/pam.d/*ロード要求を探します。このモジュールは、指定されたファイルから、またはファイルが指定されていない場合はシステムデフォルトから環境変数をロードします(debianおよびubuntuでは/etc/environmentおよび/etc/security/pam_env.conf)。 linuxでの環境変数定義を含む別のファイルは/etc/login.defsです(env_で始まる行を探してください)。