La manera simple es inventar una máquina del tiempo, visitar a las diversas personas que idearon los archivos de inicio de shell y decirles que distingan claramente entre tres cosas:
- configuración de sesión, por ejemplo, variables de entorno;
- inicio de sesión, es decir, por ejemplo, iniciar un shell de línea de comandos o un administrador de ventanas o ejecutarlo
startx
;
- inicialización de shell, p. ej., alias, solicitud, asociaciones de teclas.
No es demasiado difícil obtener sesión versus shell de una manera portátil: la inicialización del tiempo de inicio de sesión entra .profile
(o .zprofile
, o .login
), la inicialización de shell entra .bashrc
o .zshrc
. He escrito anteriormente acerca .bash_profile
, zsh frente a otras conchas , más acerca de la portabilidad (sobre todo de golpe) , más sobre quién lee.profile
.
Un problema pendiente es distinguir entre la configuración de la sesión y el inicio de la sesión. En la mayoría de los casos, ~/.profile
se ejecuta cuando inicia sesión y puede duplicarse como ambos, pero hay excepciones:
- Si su shell de inicio de sesión es (t) csh o zsh,
~/.login
y ~/.zprofile
se obtiene en lugar de ~/.profile
. Lo mismo ocurre con bash y ~/.bash_profile
, pero esto se resuelve fácilmente mediante el abastecimiento ~/.profile
de ~/.bash_profile
.
- Si inicia sesión con un administrador de pantalla (xdm, gdm, kdm, ...), si su
~/.profile
lectura depende de la versión del programa, de su distribución (Linux o de otro tipo) y del tipo de sesión que elija.
- Si cuenta con el administrador de visualización para iniciar una sesión por usted,
.profile
debe establecer variables de entorno pero no iniciar una sesión (por ejemplo, un administrador de ventanas).
- El archivo de configuración tradicional para las sesiones X es
~/.xsession
, tanto la configuración de la sesión como el inicio de la sesión. Entonces el archivo puede ser esencialmente . ~/.xsession; . ~/.xinitrc
. Algunas distribuciones fuente ~/.profile
antes ~/.xsession
. Las distribuciones modernas solo se originan ~/.xsession
cuando selecciona una sesión "personalizada" desde el administrador de visualización, y dicha sesión no siempre está disponible.
- Su administrador de sesión puede tener su propia forma de establecer variables de entorno. (Esa es una parte opcional de su entorno de escritorio, elegido por usted a través de un archivo de configuración o seleccionando un tipo de sesión al iniciar sesión; no lo confunda con los scripts de inicio de sesión proporcionados por el administrador de pantalla, que se ejecutan bajo su usuario pero elegido en todo el sistema. Sí, es un desastre.)
En resumen, ~/.profile
es el lugar adecuado para las variables de entorno. Si no se lee, intente obtenerlo ~/.xsession
(e inicie sus programas X desde allí), o busque un método específico del sistema (que puede depender de su distribución, el administrador de pantalla si lo hay, el tipo de sesión si el administrador de pantalla y el entorno de escritorio o gerente de sesión).
.profile
No está cargado en absoluto, o hay algo más que sobrescribe las variables locales? (Prueba a poner alguna otra variable, comoexport MACIEJ_PROFILE=yes
para asegurarse.set -x
En.profile
puede ser una buena manera de comprobar lo que está siendo ejecutado en y después.profile
, si se lee en absoluto.) No hay ningún punto en la obtención.profile
de.zshrc
.