Bem, sobre "Logins gráficos", depende de qual * DM você usa ...
Com o GDM (Gnome 3.18), tenho o seguinte:
/ 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"
Portanto, ~ / .profile é obtido no login usando / bin / sh e não / bin / bash
Existem dois casos
- / bin / sh está vinculado a / bin / bash, mas é executado no modo "POSIX / Bourne"
- / bin / sh é / bin / dash (debian / ubuntu). Mais rápido, mas com menos recursos (suporte ao ShellShock;) )
Portanto, o perfil / bin / sh é ~ / .profile e não ~ / .bash_profile, ~ / .zprofile
Este arquivo deve ser usado para configurações "agnósticas de shell" , como variáveis de caminho e ambiente.
NENHUM programa executável para interação com o usuário somente para login deve estar aqui (verificação de correio, sorte, etc ...)
o ~ /.* rc é destinado apenas a sessões "interativas" (aliases, por exemplo ...)
Há uma diferença entre bash e zsh para shells de login interativos
bash origens apenas .bash_profile, enquanto zsh origens na ordem:
- ~ / .zprofile
- ~ / .zshrc
- ~ / zlogin (aqui estão disponíveis aliases definidos em ~ / .zshrc. no caso de shells "interativo" + "login"
A maneira correta de fazer ~ / .bash_profile foi respondida aqui:
Diferença entre .bashrc e .bash_profile
if [ -r ~/.profile ]; then . ~/.profile; fi
case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac
Para habilitar teste (e criação de perfil), você pode usar este
~ / .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`
# ------------------------------------------------
então, para testar:
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
Então RVM / virtualenv deve entrar em ~ / .profile, IMHO
Mas isso não funciona , às vezes ...
Por exemplo, virualenvwrapper funciona apenas se o shell que estiver executando o Xsession for um bash "original" (exportando BASH_VERSION)
Se você estiver em um sistema de traço , a variável de ambiente e a configuração do caminho funcionarão, mas a definição da função virualenvwrapper não funcionará porque o script não é compatível com POSIX.
O script não apresenta nenhum erro, mas termina sem nenhuma definição de "trabalho" .
Portanto, você pode definir o ambiente em ~ / .profile , apenas para habilitar a execução correta do python a partir do cliente iniciada diretamente no 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
Mas para virualenvwrapper, você tem duas alternativas:
- origine -o em ~ / .bash_profile ou ~ / .zprofile (ou ~ / .zlogin) quando o terminal atua como shell de login
- inclua o script em ~ / .bashrc ou ~ / zshrc
Isso significa que os clientes X (emacs por exemplo) devem ser iniciados a partir do shell do terminal e não do gráfico!
"Eu não posso ter satisfação ..."