Bene, su "Login grafici", dipende da quale * DM usi ...
Con GDM (Gnome 3.18) ho questo:
/ 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"
Quindi, ~ / .profile viene fornito in login usando / bin / sh e non / bin / bash
Ci sono due casi
- / bin / sh è collegato a / bin / bash ma funziona in modalità "POSIX / Bourne"
- / bin / sh è / bin / dash (debian / ubuntu). Il più veloce ma con meno funzioni (supporto ShellShock;) )
Quindi il profilo / bin / sh è ~ / .profile e non ~ / .bash_profile, ~ / .zprofile
Questo file deve essere utilizzato per le impostazioni "shell agnostic" , come le variabili path e environment.
NESSUN programma eseguibile per l'interazione dell'utente di solo accesso dovrebbe essere, ma qui (controllo della posta, fortuna, ecc ...)
~ /.* rc sono pensati solo per sessioni "interattive" (alias per esempio ...)
C'è una differenza tra bash e zsh per le shell di login interattive
bash fonti solo .bash_profile, mentre zsh fa fonti nell'ordine:
- ~ / .Zprofile
- ~ / .Zshrc
- ~ / zlogin (qui sono disponibili alias definiti in ~ / .zshrc. in caso di shell "interattivo" + "login"
Il modo giusto di fare ~ / .bash_profile è stato risposto qui:
Differenza tra .bashrc e .bash_profile
if [ -r ~/.profile ]; then . ~/.profile; fi
case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac
Per abilitare il test (e la profilazione), è possibile utilizzare questo
~ / .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`
# ------------------------------------------------
quindi, per testare:
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
Quindi RVM / virtualenv dovrebbe andare in ~ / .profile, IMHO
Ma questo NON FUNZIONA , a volte ...
Ad esempio, virualenvwrapper funziona solo se la shell che esegue Xsession è una bash "originale" (esportando BASH_VERSION)
Se si utilizza un sistema dash , la variabile di ambiente e l'impostazione del percorso funzionano, ma la definizione della funzione virualenvwrapper non funziona perché lo script non è conforme a POSIX.
Lo script non fornisce alcun errore ma termina senza alcuna definizione "workon" .
Quindi puoi impostare l'ambiente a portata di mano in ~ / .profile , solo per abilitare la corretta esecuzione di Python dal client avviato direttamente da 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
Ma per virualenvwrapper hai due alternative:
- sorgente in ~ / .bash_profile o ~ / .zprofile (o ~ / .zlogin) quando il terminale funge da shell di login
- includere lo script in ~ / .bashrc o ~ / zshrc
Questo significa che i client X (ad esempio emacs) dovrebbero essere avviati dalla shell del terminale e non da quella grafica!
"Non posso ottenere nessuna soddisfazione ..."