Как я могу установить переменные окружения для графического входа в Linux?

15

Я ищу способ установить произвольные переменные среды для моего графического входа в Linux. Я не говорю о запуске терминала и экспорте переменных среды внутри терминала, потому что эти переменные существуют только внутри этого одного терминала. Я хочу знать, как установить переменную среды, которая будет применяться ко всем программам, запущенным в моем графическом сеансе.

Другими словами, что является эквивалентом Xorg ~/.bash_login?

Райан К. Томпсон
источник

Ответы:

10

Вы всегда можете вставить их .profile, поэтому они должны подать заявку на любой логин.

Проблемы возникают, однако, если .bash_loginсуществует: в этом случае bash не будет читать .profile.

Если вы хотите, чтобы ваши переменные из .profileприменялись как в bash, так и для других входов в систему, не используйте .bash_login! .bashrcВместо этого поместите определенные переменные bash .

Или, в качестве альтернативы, включить .profileиз.bash_login

Крис Лерчер
источник
Спасибо, .profileсработало.
Райан К. Томпсон
1
Кроме того, .profile действительно хорош, потому что я могу добавить в него любой желаемый код. Поэтому я не могу добавить к существующим переменным среды и делать другие вещи полностью.
Райан С. Томпсон
1
Похоже, что для KDE вам нужно вставить это ~/.kde/env/и закончить .sh. Смотрите startkdeсправочную страницу.
Райан С. Томпсон
2
На самом деле, это кажется немного сложнее. Это зависит от вашего выбора дистрибутива, окружения рабочего стола и даже вашей оболочки входа в систему. Для Gnome в Ubuntu 10.04 вы должны поместить свой скрипт установки ~/.gnomerc, как показано в /etc/X11/Xsession.d/55gnome-session_gnomerc.KDE читает скрипт профиля для любой оболочки, которая является вашей оболочкой входа в систему. Если SHELL=bash, тогда это читает ~/.profile. Если SHELL=zsh, тогда это читает ~/.zprofile. Я не знаю, что это делает для других оболочек.
Райан К. Томпсон
4

My .profileделает больше, чем просто устанавливает переменные среды, поэтому я выделил задачи установки среды в .setenvфайл, который только устанавливает среду. Чтобы установить среду для X11 в Debian, я добавил .xsessionrcв свой дом:

. ~/.setenv

Файл, который вызывает .xsessionrcисточник /etc/X11/Xsession.d/40x11-common_xsessionrc.

Использование файлов, которые использует bash для настройки среды, не помогло. Конечно, если бы я запустил оболочку bash в X11, я бы получил ту среду, которую хотел. Однако мне нужно настроить PATH так, чтобы в моей среде рабочего стола было запущено необходимое мне программное обеспечение. Например, я часто использую пользовательские версии Firefox, установленные вне обычных путей. Я хочу, чтобы среда рабочего стола запускала правильную версию, а не использовала все, что можно найти в путях по умолчанию. Для этого необходимо установить PATH до запуска среды рабочего стола.

Луис
источник
0

У самого Xorg такого нет, поскольку он не запускает ваши программы - это будет любой менеджер дисплеев (gdm, xdm, xinit, startx и т. Д.) Или менеджер сессий (gnome-session, KDE и т. Д.), Который вы используете , так как они являются родителями ваших процессов сеанса рабочего стола. К сожалению, существует множество из них, каждый из которых имеет разные сценарии запуска / точечные файлы, поэтому нет единого ответа на все вопросы. (В соответствии с моделью клиент / сервер X, сервер X может даже не находиться на том же компьютере, что и клиенты, и он часто работает от имени пользователя root, так что это неправильное место для таких настроек, как переменные среды.)

alanc
источник
Я знаю, что сам Xorg - это не то, на что я хочу смотреть. Я просто хочу знать, как установить переменные среды в моем сеансе X.
Райан К. Томпсон