Самый простой способ - изобрести машину времени, посетить различных людей, которые разработали файлы запуска оболочки, и сказать им, чтобы они четко различали три вещи:
- настройка сеанса, например, переменные среды;
- запуск сеанса, т.е., например, запуск командной строки или оконного менеджера или запуск
startx
;
- инициализация оболочки, например псевдонимы, подсказки, привязки клавиш.
Нетрудно получить переносимую сессию против оболочки в переносимом виде: инициализация во время входа в систему входит в .profile
(или .zprofile
, или .login
), инициализация оболочки происходит в .bashrc
или .zshrc
. Я ранее писал о .bash_profile
, ЗШЕ против других оболочек , больше о переносимости ( в основном о Баше) , более о том, кто читает.profile
.
Остающаяся проблема - это различие между настройкой сеанса и запуском сеанса. В большинстве случаев ~/.profile
выполняется при входе в систему и может удваиваться как в обоих случаях, но есть исключения:
- Если ваша оболочка входа в систему (t) csh или zsh,
~/.login
и ~/.zprofile
поставляется вместо ~/.profile
. То же самое для Баш и ~/.bash_profile
, но это легко решается путем поиска ~/.profile
из ~/.bash_profile
.
- Если вы войдете в систему с помощью диспетчера отображения (xdm, gdm, kdm,…), то, будет ли
~/.profile
прочитано ваше приложение, зависит от версии программы, вашего дистрибутива (Linux или иным образом) и выбранного вами типа сеанса.
- Если вы рассчитываете на менеджер дисплея, чтобы начать сеанс для вас, вы
.profile
должны установить переменные среды, но не запускать сеанс (например, менеджер окон).
- Традиционный конфигурационный файл для X-сессий:
~/.xsession
настройка и запуск сессий. Так что файл может быть по существу . ~/.xsession; . ~/.xinitrc
. Некоторые распределения источника ~/.profile
раньше ~/.xsession
. В современных дистрибутивах источник ~/.xsession
появляется только тогда, когда вы выбираете «пользовательский» сеанс из диспетчера отображения, и такой сеанс не всегда доступен.
- Ваш менеджер сеансов может иметь свой собственный способ установки переменных среды. (Это необязательная часть среды рабочего стола, выбранная вами из файла конфигурации или путем выбора типа сеанса при входе в систему; не путайте его со скриптами запуска сеанса, предоставляемыми диспетчером отображения, которые выполняются под вашим пользователем, но выбрано на общесистемной основе. Да, это беспорядок.)
Таким образом, ~/.profile
это правильное место для переменных среды. Если он не читается, попробуйте получить его из ~/.xsession
(и запустите ваши X-программы оттуда) или найдите системный метод (который может зависеть от вашего дистрибутива, диспетчера отображения, если таковой имеется, типа сеанса, если диспетчера отображения, и среды рабочего стола или менеджер сессий).
.profile
не загружен вообще, или что-то еще перезаписывает переменные локали? (Попробуйте установить некоторую другую переменную , как ,export MACIEJ_PROFILE=yes
чтобы убедиться.set -x
В.profile
может быть хорошим способом , чтобы проверить , что выполняется во время и после.profile
, если это читать вообще.) Там нет смысла в поиске.profile
с.zshrc
.