Eh bien, à propos des "connexions graphiques", cela dépend du * DM que vous utilisez ...
Avec GDM (Gnome 3.18), j'ai ceci:
/ 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"
Ainsi, ~ / .profile est identifié lors de la connexion en utilisant / bin / sh et non / bin / bash
Il y a deux cas
- / bin / sh est lié à / bin / bash mais s'exécute en mode "POSIX / Bourne"
- / bin / sh est / bin / dash (debian / ubuntu). Le plus rapide mais avec moins de fonctionnalités (support ShellShock;) )
Donc, le profil / bin / sh est ~ / .profile et non ~ / .bash_profile, ~ / .zprofile
Ce fichier doit être utilisé pour les paramètres " indépendants du shell" , tels que les variables de chemin et d'environnement.
AUCUN programme exécutable pour une interaction utilisateur uniquement connexion devrait être mais ici (vérification du courrier, fortune, etc ...)
les ~ /.* rc sont uniquement destinés aux sessions "interactives" (alias par exemple ...)
Il existe une différence entre bash et zsh pour les shells de connexion interactifs
sources bash uniquement. profil_bash, tandis que les sources zsh dans l’ordre:
- ~ / .zprofile
- ~ / .zshrc
- ~ / zlogin (ici, les alias définis dans ~ / .zshrc sont disponibles. en cas de shells "interactifs" + "login"
La bonne façon de faire ~ / .bash_profile a été trouvée ici:
Différence entre .bashrc et .bash_profile
if [ -r ~/.profile ]; then . ~/.profile; fi
case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac
Pour activer le test (et le profilage), vous pouvez utiliser cette
~ / .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`
# ------------------------------------------------
puis, pour tester:
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
Donc RVM / virtualenv devrait aller dans ~ / .profile, IMHO
Mais cela ne marche pas , parfois ...
Par exemple, virualenvwrapper ne fonctionne que si le shell qui exécute Xsession est un bash "original" (exportation BASH_VERSION).
Si vous êtes sur un système de tableau de bord , la variable d’environnement et le paramètre de chemin fonctionnent, mais la définition de la fonction virualenvwrapper ne fonctionne pas car le script n’est pas conforme à POSIX.
Le script ne donne aucune erreur mais il se termine sans définition "workon" .
Vous pouvez donc définir l’environnement actuel dans ~ / .profile , juste pour activer l’exécution correcte de python à partir du client démarré directement à partir de 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
Mais pour virualenvwrapper, vous avez deux alternatives:
- le source dans ~ / .bash_profile ou ~ / .zprofile (ou ~ / .zlogin) lorsque le terminal agit comme un shell de connexion
- inclure le script dans ~ / .bashrc ou ~ / zshrc
Cela signifie que les clients X (emacs par exemple) doivent être lancés à partir du terminal shell et non du graphique!
"Je ne peux obtenir aucune satisfaction ..."