Configurar la variable en / etc / environment no tiene efecto


4

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.


¿Hace una diferencia añadiendo la línea a /etc/profile?
nKn

1
@nKn Quiero que esté activo en todo el sistema, no solo para sesiones de shell ( superusuario.com/a/664237/94612 ). Pero antes de siquiera pensar en soluciones, me gustaría entender qué está pasando. Por que es /etc/environment no esta siendo evaluado?
dangonfast

Según esta respuesta ( superusuario.com/a/664236 ): /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..
nKn

1
@nKn Lo que de alguna manera contradice This file is specifically meant for system-wide environment variable settings
dangonfast

Respuestas:


1

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 ejecutar sudo 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:

El módulo pam_env PAM permite la configuración (des) de las variables de entorno.   ...

Este módulo también puede analizar un archivo con pares KEY = VAL simples en líneas separadas (/ etc / environment por defecto). Puede cambiar el archivo predeterminado para analizar, con el indicador envfile y activarlo o desactivarlo estableciendo el indicador readenv en 1 o 0 respectivamente.   ...

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 .


0

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:

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

Por lo tanto, cada vez que inicie un shell, las variables se cargarán y podrá usarlas.


0

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 :)


2
Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden volverse inválidas si la página vinculada cambia. - De la opinión
Dave M

@DaveM Tenga en cuenta que la parte esencial de la respuesta se incluyó aquí, y que estoy enlazando a un sitio asociado de StackExchange. Intenté aclarar un poco más la respuesta en cuanto a lo que funcionó, que los enlaces son para obtener más información y agregué otro (je).
bszom
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.