¿Cómo establecer una variable de entorno global en un script bash?
Si hago cosas como
#!/bin/bash
FOO=bar
...o
#!/bin/bash
export FOO=bar
... las vars parecen permanecer en el contexto local, mientras que me gustaría seguir usándolas después de que el script haya terminado de ejecutarse.

sourcees un alias de.. Así que podrías correr en susource myscript.shlugar, si quisieras ser más explícito.Cuando ejecuta un script de shell, se hace en un sub-shell por lo que no puede afectar el entorno del shell principal. Desea obtener el script haciendo:
Esto lo ejecuta en el contexto del shell actual , no como un sub shell.
Desde la página de manual de bash:
fuente
source myscript.shtambién es factible.Descripción para el comando linux
source:source is a Unix command that evaluates the file following the command, as a list of commands, executed in the current contextfuente
sourcehace?man sourceen la terminal y obtendrás lo que quieres.source. Quizás el OP no lo sea.#!/bin/bash export FOO=baro
#!/bin/bash FOO=bar export FOOexportar hombre:
El shell dará el atributo de exportación a las variables correspondientes a los nombres especificados, lo que hará que estén en el entorno de los comandos ejecutados posteriormente. Si el nombre de una variable va seguido de = palabra, el valor de esa variable se establecerá en palabra.
fuente
export FOO = /mydir/barFOO=bar export FOOfuente