Изменение переменных окружения рабочего стола Linux без повторного входа

599
sundar

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

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

0

1 ответ на вопрос

1
grawity

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

Может быть достаточно перезапустить только «системное меню», если это отдельная программа - например, в Xfce4 вы можете убить xfce4-panelи запустить ее снова из «фиксированной» оболочки, и она унаследует обновленную среду от вашей оболочки ,

Обратите внимание, что ~/.profileвместо этого следует устанавливать большинство переменных окружения, так как не все сеансы рабочего стола запускаются через bash, и даже тогда им редко говорят читать ~/.bashrc.


В качестве исключения, некоторые программы имеют функции, чтобы обновить свою среду извне, потому что рестарт затронут слишком много вещей - такие, как tmux, dbus-daemonили systemd --user. Но даже они не могут внедрить новую среду в уже работающие сервисы.

Похожие вопросы