Самый простой способ - изобрести машину времени, посетить различных людей, которые разработали файлы запуска оболочки, и сказать им, чтобы они четко различали три вещи:
- настройка сеанса, например, переменные среды;
- запуск сеанса, т.е., например, запуск командной строки или оконного менеджера или запуск
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.