起動後にグローバル環境変数を作成する

起動後にグローバル環境変数を作成する

/etc/profile と /etc/environment については知っていますが、起動してログインした後にグローバル環境変数を設定したいと思います。グローバルとは、(現在のユーザーで実行されている) どのプログラムでもアクセスできる環境変数を意味します。

基本的に、起動後 10 分後など、任意の時点で、いくつかのグローバル環境変数を設定するスクリプトを実行できるようにしたいと考えています。これは可能ですか?

背景

Ubuntu 14.04 の gpg-agent で問題が発生しています。プログラムは環境変数を使用して gpg-agent プロセスに接続します。問題は、gpg-agent の複数のインスタンス (そのうち 1 つだけが ssh サポートが有効) が実行されていることです。gpg-agent の既存のインスタンスをすべて終了し、ssh サポート付きの新しいインスタンスを開始できるようにしたいと考えています。ただし、他のプログラムが新しいインスタンスにアクセスできるようにするには、環境変数をグローバルにする必要があります。起動時にこれを行うと、他の gpg-agent が私の gpg-agent の後に起動し、環境変数を置き換えてしまうため、うまくいきませんでした。

答え1

時々、密接に関連する問題に直面することがあります。ssh-agentグラフィカル デスクトップの傘下にあるマシンで を実行していますが、同じマシンにリモートでアクセスしています。そのシェルには環境変数がありません。

そのために、私は/procBash プロセスを検索し、そのエントリをスクレイピングして変数を/proc/<pid>/environ探すスクリプトを使用します。次に、これらのエントリをシェル構文で再作成し、この「env スクレイピング スクリプト」全体を新しいシェルで -ed できます。SSH_AGENT_PIDSSH_AGENT_SOCKeval

基本的には、「/proc他の Bash がエージェント変数に何を使用しているかを調べて、それをこのセッションで再現する」ということです。

関連情報