Ну, насчет "Графического логина", это зависит от того, какую * DM вы используете ...
С GDM (Gnome 3.18) у меня есть это:
/ И т.д. / 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"
Итак, ~/.profile получен при входе в систему с использованием /bin/sh, а не /bin/bash
Есть два случая
- /bin/sh связан с /bin/bash, но работает в режиме «POSIX /Bourne»
- /bin/sh - это /bin/dash (debian /ubuntu). Быстрее, но с меньшими возможностями (поддержка ShellShock;) )
Таким образом, профиль /bin /sh - это ~ /.profile, а не ~ /.bash_profile, ~ /.zprofile
Этот файл должен использоваться для параметров "независимой от оболочки" , таких как переменные пути и среды.
Никакая исполняемая программа для взаимодействия с пользователем только для входа в систему должна быть, но здесь (проверка почты, состояние и т.д.)
~/.* rc предназначены только для "интерактивных" сессий (например, псевдонимы ...)
Существует разница между bash и zsh для интерактивных оболочек входа
исходники bash только .bash_profile, а исходники zsh в следующем порядке:
- ~/.Zprofile
- ~/.Zshrc
- ~/zlogin (здесь доступны псевдонимы, определенные в ~/.zshrc. в случае "интерактивных" + "логинов" оболочек
Правильный способ сделать ~/.bash_profile был дан ответ здесь:
Разница между .bashrc и .bash_profile
if [ -r ~/.profile ]; then . ~/.profile; fi
case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac
Чтобы включить тестирование (и профилирование), вы можете использовать это
~/.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`
# ------------------------------------------------
Затем, чтобы проверить:
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
Так что RVM/virtualenv должны идти в ~/.profile, ИМХО
Но это НЕ РАБОТАЕТ, иногда ...
Например, virualenvwrapper работает только в том случае, если оболочка с Xsession представляет собой "оригинальный" bash (экспорт BASH_VERSION)
Если вы работаете в системе dash , переменная окружения и настройка пути работают, но определение функции virualenvwrapper не работает, поскольку скрипт не совместим с POSIX.
Скрипт не выдает никакой ошибки, но заканчивается без определения "workon" .
Таким образом, вы можете настроить окружение в ~/.profile, просто чтобы включить правильное выполнение Python из клиента, запущенного непосредственно из 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
Но для virualenvwrapper у вас есть две альтернативы:
- источник его в ~/.bash_profile или ~/.zprofile (или ~/.zlogin), когда терминал действует как оболочка входа
- включите скрипт в ~/.bashrc или ~/zshrc
Это означает, что X-клиенты (например, emacs) должны запускаться из оболочки терминала, а не из графической оболочки!
«Я не могу получить никакого удовлетворения ...»