
¿Cómo puedo configurar una variable de entorno permanente por usuario independiente del shell utilizado ( bash
, zsh
y 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 ~/.profile
no 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-profile
para 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.