Я знаю о /etc/profile и /etc/environment, но я хотел бы установить глобальную переменную окружения после загрузки и входа в систему. Под глобальной я подразумеваю переменную окружения, к которой может получить доступ любая программа (запущенная под текущим пользователем).
По сути, в любой момент, скажем, через 10 минут после загрузки, я хотел бы иметь возможность запустить скрипт, который установит некоторые глобальные переменные среды. Возможно ли это?
Фон
У меня возникли некоторые проблемы с gpg-agent в Ubuntu 14.04. Программы используют переменные окружения для подключения к процессу gpg-agent. Моя проблема заключается в нескольких запущенных экземплярах gpg-agent (только в одном из которых включена поддержка ssh). Я хотел бы иметь возможность завершить все существующие экземпляры gpg-agent и запустить новый с поддержкой ssh. Однако, чтобы другие программы могли получить доступ к новому экземпляру, мне нужно, чтобы переменные окружения были глобальными. Выполнение этого во время запуска не сработало для меня, поскольку другой gpg-agent, похоже, запускается после моего, заменяя переменные окружения.
решение1
Иногда я сталкиваюсь с близкой проблемой. У меня есть ssh-agent
запущенный на машине под эгидой графического рабочего стола, но я получаю доступ к той же машине удаленно. У этой оболочки нет переменных окружения.
Для этого я использую скрипт, который просматривает /proc
процессы Bash и просматривает их /proc/<pid>/environ
записи, ища SSH_AGENT_PID
и SSH_AGENT_SOCK
переменные. Затем он воссоздает эти записи в синтаксисе оболочки, так что весь этот "скрипт прочесывания env" может быть eval
-ed в новой оболочке.
По сути, «пройдите /proc
и найдите, что другие Bash-ы используют для своих переменных агента, и воспроизведите это в этом сеансе».