Descobrindo onde uma variável env está definida

1

Eu tenho o problema de que meu http_proxy está incorretamente configurado, sempre que eu inicio um novo terminal:

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

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

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

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

  1. o processo de desktop (aquele que inicia o terminal) já está exportando o valor errado,
  2. o valor é definido por bash antes de .bashrc ser 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!

Que tal 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 )

Portanto, não está em gnome-terminal , mas está em bash . Ele deve ser definido em outro local durante o carregamento de bash , antes de .bashrc . Eu tentei verificar .profile também, mas sem sorte.

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

    
por dangonfast 12.04.2018 / 07:40

0 respostas