GNU/Linux >> Linux の 問題 >  >> Linux

Unix で別のプロセスの環境変数を変更する方法はありますか?

実質的に、いいえ。十分な特権 (root など) を持っていて、/dev/kmem (カーネル メモリ) をいじり、プロセスの環境に変更を加え、その後プロセスが実際に環境変数を再参照した場合 (つまり、プロセス環境変数のコピーをまだ取得しておらず、そのコピーだけを使用していませんでした)、もしあなたが幸運で賢く、風が正しい方向に吹いていて、月の満ち欠けが正しかったとしたら、おそらく、何かを達成するかもしれません。


おそらく技術的にはできますが (他の回答を参照)、役に立たないかもしれません。

ほとんどのプログラムは、起動後に環境変数を外部から変更できないことを想定しているため、起動時に関心のある変数を読み取り、それに基づいて初期化するだけです。したがって、後で変更しても違いはありません。プログラムがそれらを再読み込みすることはないからです。

これを具体的な問題として投稿した場合は、おそらく別のアプローチを取る必要があります。単なる好奇心からの質問:いい質問ですね :-).


gdb 経由:

(gdb) attach process_id

(gdb) call putenv ("env_var_name=env_var_value")

(gdb) detach

これは非常に厄介なハックであり、もちろん、デバッグ シナリオのコンテキストでのみ実行する必要があります。


Linux
  1. シェル変数と環境変数の使用法の違いは?

  2. デスクトップ環境の名前を取得する方法??

  3. プロセス置換を実現するためのポータブル(posix)の方法?

  1. UNIX / Linux :プロセスのナイスネス (優先度) を変更する方法

  2. Python で親プロセスの環境を変更することは可能ですか?

  3. 私のgitの言語を変更するには?

  1. 変更されない URL から最新のサーバー jar を取得する方法はありますか?

  2. export の Unix シェル変数のスコープは何ですか?

  3. コマンド ラインから .iso ファイルのボリューム ID を変更する方法はありますか?