¿Cómo establecer la variable de entorno para todos en mi sistema Linux?

¿Puedo tener ciertas configuraciones que son universales para todos mis usuarios?

Además de /etc/profile que otros han mencionado, algunos sistemas Linux ahora usan un directorio /etc/profile.d/ ; cualquier archivo .sh que se encuentre será generado por /etc/profile . Es un poco más ordenado mantener el contenido de su entorno personalizado en estos archivos que simplemente editar /etc/profile .

hombre 8 pam_env

hombre 5 pam_env.conf

Si todos los servicios de inicio de sesión usan PAM , y todos los servicios de inicio de session required pam_env.so tienen la session required pam_env.so en sus respectivos archivos de configuración /etc/pam.d/* , todas las sesiones de inicio de sesión tendrán algunas variables de entorno establecidas como se especifica en el archivo de configuración de pam_env .

En la mayoría de las distribuciones de Linux modernas, esto está todo por defecto: simplemente agregue las variables de entorno global deseadas a /etc/security/pam_env.conf .

Esto funciona independientemente del shell del usuario, y también funciona para inicios de sesión gráficos (si xdm / kdm / gdm / entrance / … está configurado de esta manera).

Si su LinuxOS tiene este archivo:

 /etc/environment 

Puede usarlo para establecer permanentemente variables ambientales para todos los usuarios.

Extraído de: http://www.sysadmit.com/2016/04/linux-variables-de-entorno-permanentes.html

Sorprendentemente, Unix y Linux en realidad no tienen un lugar para establecer variables de entorno globales. Lo mejor que puede hacer es organizar que un shell específico tenga una inicialización específica del sitio.

Si lo coloca en /etc/profile , se encargará de todo para la mayoría de los usuarios de shell compatibles con posix. Esto es probablemente “lo suficientemente bueno” para fines no críticos.

Pero cualquiera con un shell csh o tcsh no lo verá, y no creo que csh tenga un archivo de inicialización global.

Algunos extractos interesantes de la página de manual de bash:

Cuando bash se invoca como un shell de inicio de sesión interactivo o como un shell no interactivo con la opción --login , primero lee y ejecuta comandos desde el archivo /etc/profile , si ese archivo existe. Después de leer ese archivo, busca ~/.bash_profile , ~/.bash_login , y ~/.profile , en ese orden, y lee y ejecuta comandos del primero que existe y que es legible. La opción --noprofile se puede usar cuando el shell se inicia para nhibernate este comportamiento.

Cuando se inicia un shell interactivo que no es un shell de inicio de sesión, bash lee y ejecuta comandos desde /etc/bash.bashrc y ~/.bashrc , si estos archivos existen. Esto puede nhibernatese al usar la opción --norc . La opción de archivo /etc/bash.bashrc obligará a bash a leer y ejecutar comandos desde el archivo en lugar de /etc/bash.bashrc y ~/.bashrc .

Así que eche un vistazo a /etc/profile o /etc/bash.bashrc , estos archivos son los lugares correctos para la configuración global. Pon algo como esto en ellos para configurar una variable de entorno:

 export MY_VAR=xxx 

El uso de PAM es excelente.

 # modify the display PAM $ cat /etc/security/pam_env.conf # BEFORE: $ export DISPLAY=:0.0 && python /var/tmp/myproject/click.py & # AFTER : $ python $abc/click.py & DISPLAY DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY} abc DEFAULT=/var/tmp/myproject 

Cada proceso que se ejecuta bajo el kernel de Linux recibe su propio entorno único que hereda de su principal. En este caso, el padre será un shell en sí mismo (generando un subcartera) o el progtwig de “inicio de sesión” (en un sistema típico).

Como el entorno de cada proceso está protegido, no hay forma de ‘inyectar’ una variable ambiental a cada proceso en ejecución, por lo que incluso si modifica el shell .rc / profile predeterminado, no entrará en vigencia hasta que cada proceso salga y vuelva a cargarse. su configuración de inicio.

Mire en / etc / para modificar las variables de inicio predeterminadas para cualquier caparazón en particular. Solo tenga en cuenta que los usuarios pueden (y a menudo lo hacen) cambiarlos en su configuración individual.

Unix está diseñado para obedecer al usuario, dentro de los límites.

NB : Bash no es el único shell en su sistema. Preste especial atención a lo que señala realmente el enlace simbólico / bin / sh. En muchos sistemas, esto realmente podría ser un guión que es (por defecto, sin invocación especial) POSIXLY correcto. Por lo tanto, debe tener cuidado de modificar ambos valores predeterminados, o los scripts que comienzan con / bin / sh no heredarán sus valores predeterminados globales. Del mismo modo, tenga cuidado para evitar la syntax que solo bash entiende al editar ambas, es decir, avoiding bashisms .

Si está trabajando en ubuntu, escriba este comando ~ / .bashrc (si está usando gedit puede escribir gedit ~ / .bashrc ) luego escriba la variable de entorno que desea persistir en todas las sesiones de la terminal, por ejemplo export variable = “2015”

  1. Descargar jdk usando wget
  2. Ubique la ruta java utilizando $ que java le mostrará dónde se almacena realmente JAVA, es decir, / usr / lib / jvm / java-8-openjdk-amd64 // bin / java
  3. Copie la ruta anterior, es decir, / usr / lib / jvm / java-8-openjdk-amd64 /
  4. Ahora abre el .bashrc usando el editor nano ie nano .bashrc
  5. Agregue la ruta en el archivo .bashrc, es decir, JAVA_HOME usando export cammand y guarde el archivo, es decir, exporte JAVA_HOME = / usr / lib / jvm / java-8-openjdk-amd64 / y exporte PATH = $ JAVA_HOME / bin: $ PATH
  6. Ejecute $ source ~ / .bashrc
  7. $ echo $ PATH

Tu camino está establecido