啟動後建立全域環境變數

啟動後建立全域環境變數

我知道 /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 用於其代理變數的內容,並在本次會話中重現它」。

相關內容