¿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.
source
es un alias de.
. Así que podrías correr en susource myscript.sh
lugar, 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.sh
tambié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 context
fuente
source
hace?man source
en la terminal y obtendrás lo que quieres.source
. Quizás el OP no lo sea.#!/bin/bash export FOO=bar
o
#!/bin/bash FOO=bar export FOO
exportar 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/bar
FOO=bar export FOO
fuente