UTNianos

Versión completa: [Sistemas Operativos] - Asignacion en 2 plano
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Tenemos un problema, te lo detallo con un ejemplo, tengo un script padre y un script hijo, y el script padre exporta una variable y llama al otro script pero lo llama en segundo plano, con & en el final de la sentencia, cuestion que este 2° script modifica el contenido de la variable de entorno del script padre, pero el script padre NO ve ese cambio, PERO si el script padre llama al otro script y NO lo manda a 2° plano la asignacion de la variable funciona perfecto, el problema es que NECESITO que el 2° script se ejecute en 2° plano y que este pueda modificar la/s variable/s de entorno del padre, aca te paso un ejemplo muy simple de la situacion:

programa1.sh

#!/bin/bash
export Nombre
. /root/programa2.sh &
echo "$Nombre"


--------------------------

programa2.sh

#!/bin/bash
Nombre="Pepe"


-------------------------


Si probas eso asi como esta vas a ver que lo que asigna programa 2 a la variable Nombre, no se ve desde programa 1, PERO si le sacas el & y llamas en 1 plano si anda, y si se ve lo que asigna el programa 2.

Bueno, ojala me puedas ayudar con esto porque es vital para el tp, Gracias Ari!! nos vemos!!!

Nazareno
eso es porque con & el bash crea un nuevo proceso.
Las variables de entorno son locales al proceso, por eso cuando las seteas en el bash y luego cerras la consola, esa config se pierde, a menos que la pongas en un .bash_profile o algo similar a eso (script q se ejecuta cada vez q se levanta la consola).

Al margen, lo q haría si fuese vos sería retornar algun codigo desde el 2do script, o comunicarlos con un pipe.
Los procesos en background no pueden modificar variables de entorno, eso es asi y no le des mas vueltas. Tal vez la solucion vendria usando señales, es decir que el proceso en background sea una especie de daemon que avise al script padre que debe hacer algo. Fijate en google.com/linux temas como "signals Bash" y "capture signals".
Espero que te ayude.
URLs de referencia