GNU/Linux >> Tutoriales Linux >  >> Linux

¿Es posible cambiar el entorno de un proceso principal en Python?

Usaría la instrucción bash eval y haría que el script de python generara el código de shell

niño.py:

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

padre.sh

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

No es posible, para ningún proceso secundario, cambiar el entorno del proceso principal. Lo mejor que puede hacer es generar declaraciones de shell en la salida estándar que luego obtiene, o escribirlas en un archivo que obtiene en el padre.


Ningún proceso puede cambiar su proceso principal (o el entorno de cualquier otro proceso existente).

Sin embargo, puede crear un nuevo entorno creando un nuevo shell interactivo con el entorno modificado.

Tiene que generar una nueva copia del shell que use el entorno actualizado y tenga acceso a la entrada estándar, la salida estándar y la salida estándar, y haga su baile de reiniciación.

Debe hacer algo como usar subprocess.Popen para ejecutar /bin/bash -i .

Entonces, el shell original ejecuta Python, que ejecuta un nuevo shell. Sí, tienes muchos procesos en ejecución. No, no es tan malo porque el shell original y Python realmente no están haciendo nada excepto esperar a que termine el subshell para que también puedan salir limpiamente.


Linux
  1. ¿Nuevo proceso principal cuando muere el proceso principal?

  2. ¿La diferencia en el uso entre las variables de shell y las variables de entorno?

  3. ¿Cambiar el entorno de un proceso en ejecución?

  4. CentOS / RHEL:cómo cambiar el shell de inicio de sesión del usuario

  5. UNIX / Linux:Cómo cambiar la amabilidad (prioridad) de un proceso

Cómo cambiar la fuente de GNOME Shell

Cómo cambiar la prioridad de un proceso en Linux

Cómo cambiar el shell predeterminado en el sistema Linux

Cómo cambiar el shell predeterminado en Linux

¿Cómo configuro el directorio de trabajo del proceso principal?

¿Cómo obtener el PYTHONPATH en shell?