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

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

1 ответ1

1

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

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

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


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .