Establecer una variable de entorno por shell de usuario independiente

Establecer una variable de entorno por shell de usuario independiente

¿Cómo puedo configurar una variable de entorno permanente por usuario independiente del shell utilizado ( bash, zshy fish)?

Respuesta1

EDITAR: según¿Cuál es la mejor forma independiente de distribución/shell para configurar variables de entorno?, la mejor solución para esto es~/.pam_environment

EDITAR: se volvió a la solución hacky ya que ~/.profileno todos los shells la leen:

Todas las conchas son fuente /etc/profile.

Eso significa que en /etc/profile, podrías poner una línea como

. $HOME/.custom-profile

Luego, podrías agregar tus variables ~/.custom-profilepara cada usuario.

Respuesta2

Todos los shells leen diferentes archivos de perfil por usuario (zsh: ~/.profile, bash: ~/.bash_profile, csh solo tiene un archivo rc, etc.). Entonces tendrías que cambiar a todos estos candidatos potenciales.

Sin embargo, la mayoría de los shells, como mínimo, recurren a la lectura ~/.profile (¡gracias @terdon por señalar esto!), así que ahí es donde puedes colocar tus exportaciones.

Dado que el "iniciar sesión" generalmente lo realiza un proceso que tiene la capacidad de cambiar su uid y gid (típicamente: un administrador de inicio de sesión que se ejecuta como root), depende de estos programas definir el entorno para el programa generado (por ejemplo, un shell).

Pero: hay más de un administrador de inicio de sesión (su GDM/lightdm/KDM/... administrador de inicio de sesión visual, getty, logind/loginct, ssh, getty...), y leen la configuración de diferentes archivos, por lo que no hay una manera consistente allí tampoco.

información relacionada