启动后创建全局环境变量

启动后创建全局环境变量

我知道 /etc/profile 和 /etc/environment,但我想在启动和登录后设置一个全局环境变量。所谓全局,是指任何程序(在当前用户下运行)都可以访问的环境变量。

基本上在任何给定点,比如启动后 10 分钟,我希望能够运行一个脚本来设置一些全局环境变量。这可能吗?

背景

我在 Ubuntu 14.04 中使用 gpg-agent 时遇到一些问题。程序使用环境变量连接到 gpg-agent 进程。我的问题是运行多个 gpg-agent 实例(只有其中一个启用了 ssh 支持)。我希望能够杀死所有现有的 gpg-agent 实例并使用 ssh 支持启动一个新实例。但是,为了其他程序能够访问新实例,我需要将环境变量设为全局变量。在启动期间执行此操作对我来说不起作用,因为其他 gpg 代理似乎在我的之后启动,替换了环境变量。

答案1

有时我面临一个密切相关的问题。我ssh-agent在图形桌面保护下的一台机器上运行,但我远程访问同一台机器。该 shell 没有环境变量。

为此,我使用一个脚本来查找/procBash 进程,并抓取它们的/proc/<pid>/environ条目,查找SSH_AGENT_PID变量SSH_AGENT_SOCK。然后它以 shell 语法重新创建这些条目,因此整个“env scraping script”可以eval在新 shell 中进行编辑。

基本上,“查找/proc其他 Bash-es 用于其代理变量的内容,并在本次会话中重现它”。

相关内容