Una copia del entorno se propaga a subcapas, por lo que esto funciona:
$ export MY_VAR=200
$ bash
$ echo $MY_VAR
200
pero como se trata de una copia, no puede obtener ese valor hasta el shell principal, al menos no cambiando el entorno.
Parece que realmente quiere ir un paso más allá, que es hacer algo que actúe como una variable global, compartida por shells "hermanos" iniciados por separado del padre, como su nueva pestaña en Gnome Terminal.
Principalmente, la respuesta es "no se puede, porque las variables de entorno no funcionan de esa manera". Sin embargo, hay otra respuesta, que es, bueno, siempre puedes hackear algo. Un enfoque sería escribir el valor de la variable en un archivo, como ~/.myvar
, y luego incluirlo en ~/.bashrc
. Luego, cada nuevo shell comenzará con el valor leído de ese archivo.
Podría ir un paso más allá: haga que ~/.myvar
esté en el formato MYVAR=200
y luego configúrelo PROMPT_COMMAND=source ~/.myvar
, lo que hará que el valor se vuelva a leer cada vez que obtenga un nuevo mensaje. Todavía no es una variable global compartida, pero está comenzando a actuar así. Sin embargo, no se activará hasta que aparezca un mensaje, lo que, dependiendo de lo que intente hacer, podría ser una limitación seria.
Y luego, por supuesto, lo siguiente es escribir automáticamente los cambios ~/.myvar
. Eso se vuelve un poco más complicado, y me detendré en este punto, porque en realidad, las variables de entorno no estaban destinadas a ser un mecanismo de comunicación entre shell, y es mejor encontrar otra forma de hacerlo.