Установите переменные среды в процессе рабочего стола после входа в систему

Установите переменные среды в процессе рабочего стола после входа в систему

Я могу установить переменные окружения, которые будут наследоваться всеми процессами в ~/.profile. Это работает, потому что среда рабочего стола (например, gnome-shell) запускает этот файл при входе в систему. Затем gnome-shell обновляет свои собственные переменные окружения. Поскольку каждый процесс (firefox, xterm, emacs) имеет gnome-shell в качестве предка, они наследуют эти переменные окружения.

Есть ли способ обновить переменные среды в этом процессе (gnome-shell) после входа в систему? Я представляю себе что-то вроде

$ xdg-set FOO=BAR

то в новом терминале вы сразу увидите

$ echo $FOO
BAR

решение1

Окружение передается новому процессу аналогично аргументам командной строки: они копируются в адресное пространство нового процесса. Они не передаются «по ссылке», поэтому изменение в окружении некоторого процесса-предка не отражается в процессах-потомках.

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

Связанный контент