Ну, насчет "Графического логина", это зависит от того, какую * 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) должны запускаться из оболочки терминала, а не из графической оболочки!
«Я не могу получить никакого удовлетворения ...»