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.