Solo quiero configurar una variable de entorno de todo el sistema, JAVA_HOME
para todos los usuarios, incluido el usuario root .
Requisitos:
- accesible para usuarios normales
- accesible para root
- siempre cargado, no solo para bash (gnome-terminal no inicia un bash por defecto)
- para trabajar en Ubuntu, Debian y opcionalmente Red Hat
- genial si la adición se pudiera escribir fácilmente
Respuestas:
Como nadie agregó una respuesta completa, aquí es lo que considero mejor actualmente, al menos para ubuntu, pero estoy dispuesto a adaptar la respuesta para otras plataformas * nix.
Otras opciones que ya fueron consideradas pero descartadas:
/etc/environment
funciona pero es más difícil de mantener ya que otras herramientas o personas pueden editarlo./etc/profile
- lo mismo que arribafuente
En Debian / Ubuntu eso sería / etc / environment
No sé el equivalente de Red Hat.
fuente
/etc/environment
. Consulte también serverfault.com/a/584072/26218No entiendo por qué descartó / etc / profile. Esa es la ubicación correcta.
fuente
Algunos han respondido diciendo que
/etc/environment
está depurada y / o que ya no se usa en Debian, y esto es (como en la versión 7) falso.El archivo es realmente leído por PAM, específicamente
pam_env(8)
, a través de unenvfile
indicador predeterminado . La página de manual también establece este valor predeterminado en la sección ARCHIVOS.Los wikis citados (especialmente el de configuración regional) simplemente afirman que las variables de entorno basadas en la configuración regional ahora deben estar
/etc/profile
. Su declaración "(en versiones anteriores de Debian, también / etc / environment)" es vaga y está en el contexto de las configuraciones regionales.Un vistazo rápido
/etc/pam.d
muestra:Esas líneas de configuración son aditivas y, como falta la primera
envfile
, su valor predeterminado es/etc/environment
.Todo esto, por supuesto, se basa en cualquier binario que esté utilizando (
crond
, shells de inicio de sesión, etc.) se compila contra PAM.Finalmente, esto implica que otros sistemas que usan PAM (por ejemplo, RedHat), se comportan igual, como se puede ver en su respectiva página de manual.
fuente
Una nota al margen: Eche un vistazo al entorno de módulos . Lo uso cada vez que tengo que ofrecer un entorno UNIX complejo, versionado, autoextensible y conciso a docenas o cientos de usuarios. Se utiliza principalmente en entornos HPC multiusuario a gran escala. Solo usarlo para una variable en particular sin duda es una ingeniería excesiva, pero hace un trabajo increíble una vez que necesita más que unos pocos paquetes de software y su entorno.
fuente
/etc/profile
Deberia trabajar. Probé este momento para estar seguro, puestoexport SOMETEST=1234
que/etc/profile
y después de re-registroecho $SOMETEST
me dio1234
como se esperaba. También degnome-terminal
fuente
/etc/enviroment
no se utiliza en la última versión estable de Debian. La recomendación es crear su propio*.sh
archivo/etc/profile.d/
para este propósito, como dice Sorin S. Ver https://wiki.debian.org/EnvironmentVariablesfuente
No puede usar ningún ~ archivo específico en este caso. asi que....
/etc/profile
sería el lugar adecuado para ello en este caso. Sin embargo, los usuarios que han iniciado sesión actualmente deben obtener una nueva sesión de inicio de sesión, pero esto no debería ser un gran problema.@ wk01:
/etc/profile
no se carga de forma predeterminada por un shell que no es de inicio de sesión. tu.bashrc
es, probablemente, lo carga ...fuente