Isso seria difícil.
Variáveis de ambiente não são objetos monitoráveis - elas existem na própria memória do programa, e são apenas um monte de texto que os processos transmitem aos seus filhos. Portanto, é quase impossível auditar seu acesso no nível do sistema. Na melhor das hipóteses, você poderia usar strace
para ver que env é passado para novos processos durante a criação do processo (especificamente o execve
syscall) - assumindo que você consiga anexá-lo com antecedência suficiente.
(No entanto, strace não mostrará o que acontece dentro de um processo. Então, se você tentar rastrear o bash, você verá apenas com o que começa e o que acaba passando adiante, mas você não verá o que os scripts individuais do /etc/profile.d fazem.)
Isso também significa que scripts de bash não são a única coisa que pode afetar as variáveis. Muitos deles são, de fato, configurados pelos módulos PAM ou pelo próprio programa de login. Em particular, /etc/environment
é normalmente lido pelo módulo "pam_env".