A variável de configuração em / etc / environment não tem efeito

3

Eu tenho o seguinte no meu /etc/environment :

http_proxy=http://myproxy.net:12345

Depois de reiniciar a máquina, faço o login e verifico a variável:

root@d6c44fa03243:/# echo $http_proxy
(empty)

Por que a variável não está definida?

Nota: devo mencionar que este é um contêiner docker, embora eu não veja porque isso faria diferença.

EDITAR

Mais detalhes sobre o sistema ( Ubuntu 16.04.4 Xenial Xerus ):

root@d6c44fa03243:/# uname -a
Linux d6c44fa03243 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

root@d6c44fa03243:/# cat /etc/issue
Ubuntu 16.04.4 LTS \n \l

EDIT2

De acordo com a documentação do Ubuntu :

/etc/environment

This file is specifically meant for system-wide environment variable settings. It is not a script file, but rather consists of assignment expressions, one per line.

    
por dangonfast 27.03.2018 / 10:39

3 respostas

1

Como as ferramentas do UNIX são criadas com transparência em mente, você pode encontrar a resposta com o ajuda de grep . Não importa se você está trabalhando com um sistema operacional completo ou com um contêiner (o mais recente significa apenas que você pode precisar executar algumas etapas adicionais para instalar as ferramentas necessárias para que as coisas se tornem transparentes).

Verifique se você tem grep instalado no seu sistema operacional e execute sudo grep -R "/etc/environment" /etc/* . Isso irá procurar todos os scripts e configurações do sistema para ver quais usam esse arquivo. Em uma caixa padrão vagabundo do ubuntu / xenial64, os scripts e configurações que usam este arquivo estão principalmente em /etc/init.d/ /etc/pam.d/ e /etc/rc.*.d/ .

As seguintes configurações são como as variáveis em /etc/environment são definidas no meu shell:

/etc/pam.d/login /etc/pam.d/su /etc/pam.d/sshd

De man pam_env :

The pam_env PAM module allows the (un)setting of environment variables. ...

This module can also parse a file with simple KEY=VAL pairs on separate lines (/etc/environment by default). You can change the default file to parse, with the envfile flag and turn it on or off by setting the readenv flag to 1 or 0 respectively. ...

Faça uma pesquisa semelhante no seu contêiner docker. Você pode verificar se o seu contêiner usa pam_env.so .

O mais provável é que a melhor solução seja fazer com que seu processo de inicialização crie variáveis de ambiente a partir de /etc/environment , mas esse aconselhamento é dado sem entender o que você está construindo. Os usos em '/etc/rc*.d/ podem ser bons exemplos de como fazer isso.

A maioria das pessoas segue o conselho do @ ben-njeri e define variáveis nos arquivos de configuração padrão do bash shell .

    
por 18.09.2018 / 22:58
0

Configure os arquivos /etc/profile ou ~/.bashrc ou ~/.bash_profile para exportar as variáveis sempre que um novo shell for iniciado.

/etc/profile é para todo o sistema e outros para usuários específicos.

Basta adicionar as linhas abaixo no final:

export http_proxy=”http://myproxy.net:12345”
export ftp_proxy=”http://myproxy.net:12345”
export https_proxy=”http://myproxy.net:12345"

Assim, cada vez que você inicia um shell, as variáveis são carregadas e você pode usá-las.

    
por 01.04.2018 / 14:04
0

Eu tive esse problema no Ubuntu 18.04. Não consegui fazer com que /etc/environment funcionasse, mas usei um script em /etc/profile.d/ (conforme documentado aqui ), e isso funcionou .

Para mais informações, consulte minha resposta para esta pergunta relacionada . Espero que ajude:)

    
por 12.11.2018 / 13:10