GNU/Linux >> Belajar Linux >  >> Linux

Apakah mungkin mengubah Lingkungan dari proses induk dengan Python?

Saya akan menggunakan pernyataan bash eval, dan membuat skrip python menampilkan kode shell

anak.py:

#!/usr/bin/env python
print 'FOO="A_Value"'

induk.sh

#!/bin/bash
eval `./child.py`

Tidak mungkin, untuk setiap proses anak, mengubah lingkungan proses induk. Hal terbaik yang dapat Anda lakukan adalah mengeluarkan pernyataan shell ke stdout yang kemudian Anda sumber, atau menulisnya ke file yang Anda sumber di induk.


Tidak ada proses yang dapat mengubah proses induknya (atau lingkungan proses lain yang ada).

Namun, Anda dapat membuat lingkungan baru dengan membuat shell interaktif baru dengan lingkungan yang dimodifikasi.

Anda harus menelurkan salinan baru dari shell yang menggunakan lingkungan yang telah ditingkatkan dan memiliki akses ke stdin, stdout dan stderr yang ada, dan melakukan reinitialization dance.

Anda perlu melakukan sesuatu seperti menggunakan subprocess.Popen untuk menjalankan /bin/bash -i .

Jadi shell asli menjalankan Python, yang menjalankan shell baru. Ya, Anda memiliki banyak proses yang berjalan. Tidak, itu tidak terlalu buruk karena shell asli dan Python tidak benar-benar melakukan apa pun kecuali menunggu subkulit selesai sehingga mereka juga dapat keluar dengan bersih.


Linux
  1. Proses Induk Baru Ketika Proses Induk Meninggal?

  2. Perbedaan Penggunaan Antara Variabel Shell Dan Variabel Lingkungan?

  3. Ubah Lingkungan Proses yang Berjalan?

  1. UNIX / Linux :Bagaimana mengubah kebaikan (prioritas) suatu proses

  2. Cara Mengubah Shell Default Di Linux

  3. Cara mengubah shell default di Linux

  1. Ubah direktori kerja di shell dengan skrip python

  2. Campuran skrip shell dan python mungkin?

  3. Bagaimana cara mengubah bahasa git saya?