Eu tenho o seguinte na minha /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 Documentação do Ubuntu :
/ etc / environment
Este arquivo é especificamente destinado a variáveis de ambiente em todo o sistema definições. Não é um arquivo de script, mas consiste em atribuição expressões, uma por linha.
ubuntu
environment-variables
dangonfast
fonte
fonte
/etc/profile
?/etc/environment
não está sendo avaliado?/etc/environment is not part of POSIX, it belongs to PAM (Pluggable Authentication Module), and only programs compiled with PAM support are able to use it (primarily login systems, which subsequently start the shell or user environment). This means it isn't even read by your shell.
.This file is specifically meant for system-wide environment variable settings
Respostas:
Porque as ferramentas UNIX são construídas com transparência em mente, você pode encontrar a resposta com a 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 extras para instalar as ferramentas necessárias para tornar as coisas transparentes).Verifique se você tem
grep
instalado no seu sistema operacional e executesudo grep -R "/etc/environment" /etc/*
. Isso irá procurar todos os scripts e configurações do sistema para ver quais usam esse arquivo. Em um padrão ubuntu / xenial64 vagrant box, os scripts e configurações que usam esse arquivo estão principalmente em/etc/init.d/
/etc/pam.d/
e/etc/rc.*.d/
.As seguintes configurações são como variáveis em
/etc/environment
get set no meu shell:/etc/pam.d/login /etc/pam.d/su /etc/pam.d/sshd
De
man pam_env
:Faça uma pesquisa semelhante no seu contêiner docker. Você pode verificar se o seu contêiner usa
pam_env.so
.Muito provavelmente, a melhor solução é ter seu processo de inicialização criando variáveis de ambiente de
/etc/environment
mas esse conselho é 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 para o concha bash .
fonte
Configurar
/etc/profile
ou~/.bashrc
ou~/.bash_profile
arquivos para exportar as variáveis sempre que um novo shell é iniciado./etc/profile
é para todo o sistema e outros são para usuários específicos.Basta adicionar as linhas abaixo no final:
Então, toda vez que você inicia um shell, as variáveis são carregadas e você pode usá-las.
fonte
Eu tive esse problema no Ubuntu 18.04. Não consegui
/etc/environment
para trabalhar em tudo, mas usou um script em/etc/profile.d/
em vez disso (conforme documentado Aqui ), e essa fez trabalhos.Para mais informações, consulte minha resposta para esta questão relacionada . Espero que ajude :)
fonte