GNU/Linux >> Linux Esercitazione >  >> Linux

È possibile modificare l'ambiente di un processo genitore in Python?

Userei l'istruzione bash eval e farei in modo che lo script python emetta il codice della shell

child.py:

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

genitore.sh

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

Non è possibile, per nessun processo figlio, modificare l'ambiente del processo padre. Il meglio che puoi fare è inviare le istruzioni della shell a stdout che poi provieni, o scriverle in un file che tu provi nel genitore.


Nessun processo può modificare il proprio processo padre (o qualsiasi altro ambiente di processo esistente).

Puoi, tuttavia, creare un nuovo ambiente creando una nuova shell interattiva con l'ambiente modificato.

Devi generare una nuova copia della shell che utilizza l'ambiente aggiornato e ha accesso a stdin, stdout e stderr esistenti, e fa il suo ballo di reinizializzazione.

Devi fare qualcosa come usare subprocess.Popen per eseguire /bin/bash -i .

Quindi la shell originale esegue Python, che esegue una nuova shell. Sì, hai molti processi in esecuzione. No, non è poi così male perché la shell originale e Python in realtà non stanno facendo altro che aspettare che la subshell finisca in modo che anche loro possano uscire in modo pulito.


Linux
  1. Cambiare il carattere della console in modalità testo?

  2. UNIX/Linux:Come cambiare la gentilezza (priorità) di un processo

  3. C'è un modo per cambiare le variabili d'ambiente di un altro processo in Unix?

  4. Come imposto la directory di lavoro del processo genitore?

  5. Cambia la directory di lavoro nella shell con uno script python

Come modificare il carattere della shell di GNOME

Come modificare la priorità di un processo in Linux

Come modificare la shell predefinita nel sistema Linux

Come modificare la shell predefinita in Linux

Come modificare la shell predefinita in Linux

Come ottenere PYTHONPATH nella shell?