GNU/Linux >> Znalost Linux >  >> Linux

Existuje způsob, jak změnit proměnné prostředí jiného procesu v Unixu?

V podstatě ne. Pokud jste měli dostatečná oprávnění (root nebo tak nějak) a šťouchli jste se do /dev/kmem (paměť jádra) a provedli jste změny v prostředí procesu a pokud proces skutečně poté znovu odkazoval na proměnnou prostředí (tj. ještě nepořídil kopii env var a nepoužíval právě tuto kopii), pak možná, pokud jste měli štěstí a byli chytří a vítr foukal správným směrem a fáze měsíce byla možná správná, můžete něčeho dosáhnout.


Pravděpodobně to můžete udělat technicky (viz další odpovědi), ale nemusí vám to pomoci.

Většina programů bude očekávat, že proměnné env nelze po spuštění zvenčí změnit, takže většina z nich pravděpodobně při spuštění pouze přečte proměnné, které je zajímají, a na základě toho inicializuje. Takže jejich následná změna nebude mít žádný vliv, protože program je nikdy znovu nepřečte.

Pokud jste to zveřejnili jako konkrétní problém, pravděpodobně byste měli zvolit jiný přístup. Kdyby to bylo jen ze zvědavosti:Pěkná otázka :-).


Přes gdb:

(gdb) attach process_id

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

(gdb) detach

To je docela ošklivý hack a měl by být samozřejmě proveden pouze v kontextu scénáře ladění.


Linux
  1. Rozdíl v použití mezi proměnnými shellu a proměnnými prostředí?

  2. Změnit prostředí běžícího procesu?

  3. Přenosný (posix) způsob, jak dosáhnout substituce procesu?

  1. UNIX / Linux :Jak změnit vhodnost (prioritu) procesu

  2. Je možné změnit prostředí nadřazeného procesu v Pythonu?

  3. Existuje způsob, jak zkontrolovat aktuální rpath v Linuxu?

  1. Použití proměnných prostředí v příkazu cURL - Unix

  2. Jaký je rozsah exportovaných proměnných shellu Unix?

  3. Jak číst proměnné prostředí procesu