Как установить PATH или другие переменные среды, чтобы X приложения могли получить к нему доступ?

Как настроить переменные env так, чтобы KDE их распознавал?

Как установить путь в среде без оболочки (KDE)?

В отличие от вышеуказанных двух вопросов, я хочу знать, как это сделать для GNOME. Или еще лучше, есть ли метод, который не зависит от оконного менеджера. Для оболочки / терминала я обычно редактирую ~/.bashrc . Где я могу размещать экспортные заявления, чтобы переменные среды были доступны для всех X-приложений независимо от того, какой оконный менеджер использовался?

  • i3 - Как изменить ключ мод на AltGr и отключить его для «нормального» ввода
  • X, Xorg и D-Bus: какая разница?
  • Как отправить нажатие клавиш (F5) с терминала на процесс?
  • Одновременная запись в файл журнала из многих процессов
  • Как определить горячую клавишу для приложения, которая отменяет глобальную горячую клавишу?
  • Как включить Shift Lock? (Sticky shift key)
  • «Не удалось отправить запрос на пересылку X11» при подключении к github.com
  • как бороться с клавиатурными жадными приложениями
  • 3 Solutions collect form web for “Как установить PATH или другие переменные среды, чтобы X приложения могли получить к нему доступ?”

    Модуль PAM pam_env позволяет установить их либо в /etc/environment либо в ~/.pam_environment , в зависимости от того, хотите ли вы это для всех пользователей (в системной системе) или только для вашего пользователя (всего сеанса).

    Общесистемные переменные среды

    Параметры переменной окружения, которые влияют на систему в целом (а не только на конкретного пользователя), не должны размещаться ни в одном из многих сценариев системного уровня, которые выполняются при загрузке системы или рабочего стола, а в

    /etc/environment – Этот файл специально предназначен для общесистемных параметров среды. Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку. В частности, этот файл хранит общесистемные настройки языка и пути.

    Общие переменные окружения

    Параметры переменных среды, которые должны влиять только на конкретного пользователя (а не на систему в целом), должны быть установлены следующим образом:

    ~/.pam_environment – этот файл специально предназначен для настройки среды пользователя. Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку.

    Примечание. Использование .pam_environment требует повторного входа для инициализации переменных. Перезапустить только терминал недостаточно, чтобы использовать переменные.

    Подробнее см. В вики Ubuntu о переменных среды .

    /etc/X11/Xsession.d/ … или по строкам этого каталога, в зависимости от вашего Linux (?). Я написал немного об этом здесь .

    Концепция заключается в том, что после входа в систему диспетчер дисплея запускает «Xsession» и источники (!) Все в этом каталоге в алфавитном порядке. Вы можете просто добавить скрипт, который изменяет PATH. Xsession вряд ли будет вашим DE, и обычно все процессы являются дочерними элементами этого Xsession, поэтому наследуют среду PATH.

    Процесс наследует среду от родительского процесса, который запускает ее. Чтобы изменить PATH или другие значения среды для дочернего элемента, мы можем установить переменную в значение родителя и экспортировать переменную, если мы находимся в оболочке, а затем запустите дочерний процесс. Ребенок также может прочитать один или несколько файлов инициализации, чтобы изменить свою собственную среду по мере ее запуска.

    Итак, есть еще два вопроса, чтобы получить ответ:

    Каково дерево родительского / дочернего наследования, которое приводит к процессу, на который вы хотите повлиять изменение PATH или среды?

    Какие файлы инициализации используются / прочитаны / получены соответствующими процессами в этом дереве?

    Вот часть вывода ps (1), чтобы показать, что я имею в виду под деревом наследования:

     # /bin/ps -o 'uid:5,pid:5,ppid:5,user:4,args' axf UID PID PPID USER COMMAND 0 1 0 root /usr/lib/systemd/systemd 0 1481 1 root /usr/sbin/gdm-binary -nodaemon 0 1497 1481 root \_ /usr/libexec/gdm-simple-slave ... 0 1504 1497 root \_ /usr/bin/Xorg :0 ... 0 1855 1497 root \_ gdm-session-worker ... 

    Обратите внимание на графические последовательности \ _ и номера PIP / PPID (идентификатор процесса и родительский PID). PID 1855 был запущен (некоторым ребенком?) 1497, который был запущен 1481, который был запущен PID 1, который был запущен процессом предка 0.

    Сделайте аналогичную трассировку наследования для процесса, на который хотите повлиять, выясните, какие файлы инициализации релевантны, и внесите изменения в PATH где-нибудь в этом дереве, возможно, с чем-то похожим на:

     PATH=${PATH}:/usr/local/bin 
    Linux и Unix - лучшая ОС в мире.