Descobrir onde uma variável env está definida

Descobrir onde uma variável env está definida

Eu tenho o problema de que my http_proxyestá configurado incorretamente sempre que inicio um novo terminal:

» echo $http_proxy 
http://http://127.0.0.1:1234/

O que é... ruim. Eu tenho um bug em algum lugar na configuração do meu ambiente. Vamos tentar encontrá-lo. Para isso mostrarei o valor da variável logo no início de .bashrc. Eu crio umnovoterminal, e o valor errado já está lá para eu ver:

http_proxy=http://http://127.0.0.1:1234/
» 

Ok, então qualquer um destes deve ser verdadeiro:

  1. o processo desktop (aquele que inicia o terminal) já está exportando o valor errado,
  2. o valor é definido porbash antes .bashrcé analisado

Deixe-me verificar o ambiente do processo pai do shell atual:

» pstree -ahp myuser
...
  ├─gnome-terminal-,3807
  │   ├─bash,3814
  │   │   └─pstree,17329 -ahp myuser

Vamos verificar o ambiente do processo pai gnome-terminal:

» cat /proc/3807/environ | tr \\0 \\n | grep -i http_proxy

Nada, nada, nada!

A respeito bash?

» cat /proc/3814/environ | tr \\0 \\n | grep -i http_proxy
HTTP_PROXY=http://http://127.0.0.1:1234/
http_proxy=http://http://127.0.0.1:1234/

Como esperado, está lá (isso equivale a fazer echo $http_proxy, é claro, ou fazer cat /proc/self/environ)

Então, não está dentro gnome-terminal, mas está dentro bash. Deve ser definido em outro lugar durante o carregamento bash,antes .bashrc. Eu tentei verificar .profiletambém, mas sem sorte.

O que poderia estar acontecendo antes .bashrc? Que outras ideias de depuração você tem?

informação relacionada