Bagaimana mungkin untuk mengubah beberapa variabel di env
dari proses yang sudah berjalan, misalnya melalui /proc/PID/environ?
“File” itu read-only
.
Perlu mengubah atau menghapus variabel DISPLAY dari pekerjaan batch yang berjalan lama tanpa mematikannya.
Jawaban yang Diterima:
Anda tidak dapat melakukan ini tanpa peretasan yang buruk – tidak ada API untuk ini, tidak ada cara untuk memberi tahu proses bahwa lingkungannya telah berubah (karena itu sebenarnya tidak mungkin).
Bahkan jika Anda berhasil melakukannya, tidak ada cara untuk memastikan bahwa itu akan memiliki efek apa pun – prosesnya bisa jadi telah meng-cache variabel lingkungan yang Anda coba colek (karena tidak ada yang bisa mengubahnya).
Jika Anda benar-benar ingin melakukan ini, dan siap untuk mengambil bagian jika terjadi kesalahan, Anda dapat menggunakan debugger. Lihat misalnya pertanyaan Stack Overflow ini:
Apakah ada cara untuk mengubah variabel lingkungan proses lain?
Intinya:
(gdb) attach process_id
(gdb) call putenv ("DISPLAY=your.new:value")
(gdb) detach
Fungsi lain yang mungkin dapat Anda coba panggil adalah setenv
atau unsetenv
.
Harap benar-benar diingat bahwa ini mungkin tidak berhasil, atau memiliki konsekuensi yang mengerikan jika proses yang Anda targetkan melakukan hal-hal "menarik" dengan blok lingkungannya. Uji terlebih dahulu pada proses non-kritis, tetapi pastikan proses pengujian ini mencerminkan sedekat mungkin dengan proses yang Anda coba colok.