Bueno, sobre "Inicios de sesión gráficos", depende de qué * DM uses ...
Con GDM (Gnome 3.18) tengo esto:
/ etc / gdm / Xsession
#!/bin/sh <= *important*
...
# First read /etc/profile and .profile
test -f /etc/profile && . /etc/profile
test -f "$HOME/.profile" && . "$HOME/.profile"
# Second read /etc/xprofile and .xprofile for X specific setup
test -f /etc/xprofile && . /etc/xprofile
test -f "$HOME/.xprofile" && . "$HOME/.xprofile"
Entonces, ~ / .profile se obtiene al iniciar sesión usando / bin / sh y no / bin / bash
Hay dos casos
- / bin / sh está vinculado a / bin / bash pero se ejecuta en modo "POSIX / Bourne"
- / bin / sh es / bin / dash (debian / ubuntu). Más rápido pero con menos funciones (soporte ShellShock;) )
Entonces el perfil / bin / sh es ~ / .profile y no ~ / .bash_profile, ~ / .zprofile
Este archivo debe usarse para configuraciones "agnósticas de shell" , como las variables de ruta y entorno.
NO debe haber ningún programa ejecutable para la interacción del usuario de inicio de sesión solo aquí (verificación de correo, fortuna, etc.)
los ~ /.* rc son solo para sesiones "interactivas" (alias por ejemplo ...)
Hay una diferencia entre bash y zsh para shells de inicio de sesión interactivo
fuentes bash solo .bash_profile, mientras que las fuentes zsh en el orden:
- ~ / .zprofile
- ~ / .zshrc
- ~ / zlogin (aquí los alias definidos en ~ / .zshrc están disponibles. en caso de shells "interactivos" + "login"
Aquí se respondió la forma correcta de hacer ~ / .bash_profile :
Diferencia entre .bashrc y .bash_profile
if [ -r ~/.profile ]; then . ~/.profile; fi
case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac
Para habilitar la prueba (y la creación de perfiles), puede usar esto
~ / .bash_profile:
#!/bin/bash
# ------------------------------------------------
export _DOT_BASH_PROFILE_0=`date --rfc-3339=ns`
# ------------------------------------------------
if [ -f ~/.profile ] ; then
. ~/.profile
fi
case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac
# ------------------------------------------------
export _DOT_BASH_PROFILE_1=`date --rfc-3339=ns`
# ------------------------------------------------
~ / .zprofile:
#!/bin/zsh
# ------------------------------------------------
export _DOT_ZSH_PROFILE_0=`date --rfc-3339=ns`
# ------------------------------------------------
if [ -f ~/.profile ] ; then
. ~/.profile
fi
# no need to source, zsh already handle ~/.zshrc
###case "$-" in *i*) if [ -r ~/.zshrc ]; then . ~/.zshrc; fi;; esac
# ------------------------------------------------
export _DOT_ZSH_PROFILE_1=`date --rfc-3339=ns`
# ------------------------------------------------
entonces, para probar:
chsh -s /bin/bash
ssh localhost
env
exit
ssh localhost env
ssh -t localhost bash -i -c env
chsh -s /bin/zsh
ssh localhost
env
exit
ssh localhost env
ssh -t localhost bash -i -c env
Entonces RVM / virtualenv debería ir en ~ / .profile, en mi humilde opinión
Pero esto NO FUNCIONA , a veces ...
Por ejemplo, virualenvwrapper funciona solo si el shell que ejecuta Xsession es un bash "original" (exportando BASH_VERSION)
Si está en un sistema de tablero , la variable de entorno y la configuración de ruta funcionan, pero la definición de la función virualenvwrapper no funciona porque el script no es compatible con POSIX.
El script no da ningún error, pero termina sin ninguna definición de "workon" .
Por lo tanto, puede configurar el entorno en cuestión en ~ / .profile , solo para habilitar la ejecución correcta de Python desde el cliente iniciado directamente desde X:
export VIRTUAL_ENV="/home/mike/var/virtualenvs/myvirtualenv"
export PATH="$VIRTUAL_ENV/bin:$PATH"
unset PYTHON_HOME
https://gist.github.com/datagrok/2199506
https://www.bountysource.com/issues/9061991-setting-up-your-computer-virtualenvwrapper-linux-all
Pero para virualenvwrapper tienes dos alternativas:
- fuente en ~ / .bash_profile o ~ / .zprofile (o ~ / .zlogin) cuando el terminal actúa como shell de inicio de sesión
- incluir el script en ~ / .bashrc o ~ / zshrc
¡Esto significa que los clientes X (por ejemplo, emacs) deberían iniciarse desde el terminal y no desde el gráfico!
"No puedo obtener ninguna satisfacción ..."