Я использую zsh и gdm для запуска gnome. Некоторое время назад я обнаружил, что переменные установлены неправильно. Например, LANG / LC_ALL неверны ( ""
вместо en_GB.UTF-8
).
Я разделил .zshrc
на .zshrc
и .profile
. В последнем я устанавливаю переменные среды, но как я могу установить переменные до начала сеанса? Я попробовал несколько вариантов ( .xinitrc
, .xsessionrc
), но ни один из них не помог.
Изменить Чтобы уточнить - я использовал .profile
и вручную его в .zshrc
. Это не меняет вопроса в любом случае.
gnome
desktop-environment
gentoo
gdm
environment-variables
Мацей Печотка
источник
источник
.profile
не загружен вообще, или что-то еще перезаписывает переменные локали? (Попробуйте установить некоторую другую переменную , как ,export MACIEJ_PROFILE=yes
чтобы убедиться.set -x
В.profile
может быть хорошим способом , чтобы проверить , что выполняется во время и после.profile
, если это читать вообще.) Там нет смысла в поиске.profile
с.zshrc
.ssh localhost zsh
? Как насчетssh localhost bash
? Если bash в порядке, но не zsh, может быть, вы что-то вставили/etc/zshenv
или~/.zshenv
(что почти всегда является плохой идеей).gnome-session
, что этот набор переменных не установлен.Ответы:
Самый простой способ - изобрести машину времени, посетить различных людей, которые разработали файлы запуска оболочки, и сказать им, чтобы они четко различали три вещи:
startx
;Нетрудно получить переносимую сессию против оболочки в переносимом виде: инициализация во время входа в систему входит в
.profile
(или.zprofile
, или.login
), инициализация оболочки происходит в.bashrc
или.zshrc
. Я ранее писал о.bash_profile
, ЗШЕ против других оболочек , больше о переносимости ( в основном о Баше) , более о том, кто читает.profile
.Остающаяся проблема - это различие между настройкой сеанса и запуском сеанса. В большинстве случаев
~/.profile
выполняется при входе в систему и может удваиваться как в обоих случаях, но есть исключения:~/.login
и~/.zprofile
поставляется вместо~/.profile
. То же самое для Баш и~/.bash_profile
, но это легко решается путем поиска~/.profile
из~/.bash_profile
.~/.profile
прочитано ваше приложение, зависит от версии программы, вашего дистрибутива (Linux или иным образом) и выбранного вами типа сеанса..profile
должны установить переменные среды, но не запускать сеанс (например, менеджер окон).~/.xsession
настройка и запуск сессий. Так что файл может быть по существу. ~/.xsession; . ~/.xinitrc
. Некоторые распределения источника~/.profile
раньше~/.xsession
. В современных дистрибутивах источник~/.xsession
появляется только тогда, когда вы выбираете «пользовательский» сеанс из диспетчера отображения, и такой сеанс не всегда доступен.Таким образом,
~/.profile
это правильное место для переменных среды. Если он не читается, попробуйте получить его из~/.xsession
(и запустите ваши X-программы оттуда) или найдите системный метод (который может зависеть от вашего дистрибутива, диспетчера отображения, если таковой имеется, типа сеанса, если диспетчера отображения, и среды рабочего стола или менеджер сессий).источник
.xsession
был файл, который я искал..profile
источники.bashrc
или аналогичные, то вы можете надежно установить переменные среды.bashrc
не только для сеансов входа в систему, но и для новых оболочек, которые требуют других настроек, например, если вы начинаетеxterm
сgnome-terminal
и хотите отличатьсяdircolors
..bashrc
, они переопределят ваши предыдущие настройки. Например, если вы запустили экземпляр Screen или Tmux с определенными переменными среды, все, что вы установили.bashrc
, переопределит эти настройки.LS_COLORS
это особый случай, потому что это действительно настройка для каждого терминала; в идеале это должно быть установлено с помощью эмулятора терминала, и установка его в rc-файле оболочки - лучший способ обхода проблемы.В документации Gentoo есть статья Gentoo Linux Localization Guide . Глава 3 о настройке локали.
У меня в Gentoo
LANG
установлен этот файл и все работает нормально ...источник
.bashrc
, что неверно (см. Мой ответ и, в частности, superuser.com/questions/217431 ).env.d
более универсальны.