Tengo lo siguiente en mi /etc/environment
:
http_proxy=http://myproxy.net:12345
Después de reiniciar la máquina, inicio sesión y reviso la variable:
root@d6c44fa03243:/# echo $http_proxy
(empty)
¿Por qué no se establece la variable?
Nota: Debo mencionar que este es un contenedor docker, aunque no veo por qué haría una diferencia.
EDITAR
Más detalles sobre el 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 acuerdo con la Documentación de Ubuntu :
/ etc / medio ambiente
Este archivo está específicamente diseñado para la variable de entorno de todo el sistema. ajustes No es un archivo de script, sino que consiste en una asignación Expresiones, una por línea.
ubuntu
environment-variables
dangonfast
fuente
fuente
/etc/profile
?/etc/environment
no esta siendo evaluado?/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
Respuestas:
Porque las herramientas UNIX están construidas con transparencia En mente, puedes encontrar la respuesta con la ayuda de
grep
. No importa si está trabajando con un sistema operativo completo o un contenedor (esto último significa que es posible que tenga que tomar algunos pasos adicionales para instalar las herramientas que necesita para que las cosas se vuelvan transparentes).Comprueba que tienes
grep
instalado en su sistema operativo y ejecutarsudo grep -R "/etc/environment" /etc/*
. Esto buscará todos los scripts y configuraciones del sistema para ver cuáles usan usar este archivo. En un cuadro predeterminado de Ubuntu / Xenial64 vagabundo, Los scripts y configuraciones que utilizan este archivo. son en su mayoría en/etc/init.d/
/etc/pam.d/
y/etc/rc.*.d/
.Las siguientes configuraciones son como variables en
/etc/environment
ponte en mi shell:/etc/pam.d/login /etc/pam.d/su /etc/pam.d/sshd
Desde
man pam_env
:Haga una búsqueda similar en su contenedor docker. Puedes comprobar si tu contenedor usa
pam_env.so
.Lo más probable es que la mejor solución sea hacer que su proceso de inicio cree variables de entorno a partir de
/etc/environment
Pero ese consejo se da sin entender lo que estás construyendo. Los usos en `/etc/rc*.d/ podrían ser buenos ejemplos de cómo lograr esto.La mayoría de las personas siguen los consejos de @ ben-njeri y establecen variables en los archivos de configuración predeterminados para cáscara de bash .
fuente
Configurar
/etc/profile
o~/.bashrc
o~/.bash_profile
Archivos para exportar las variables cada vez que se inicia un nuevo shell./etc/profile
es para todo el sistema y otros son para usuarios específicos.Solo agrega las líneas como abajo al final:
Por lo tanto, cada vez que inicie un shell, las variables se cargarán y podrá usarlas.
fuente
Tengo (he) este problema en Ubuntu 18.04. No pude conseguir
/etc/environment
para trabajar, pero utiliza un guión en/etc/profile.d/
en su lugar (como se documenta aquí ), y eso hizo trabajo.Para más información, ver mi respuesta a esta pregunta relacionada . Espero eso ayude :)
fuente