world scripts script hello example ejemplos basics shell scripting environment-variables

scripts - Variables de entorno global en un script de shell



shell script example (5)

Cuando ejecuta un script de shell, se hace en un subconjunto, por lo que no puede afectar el entorno del shell principal. Desea obtener el script haciendo:

. ./setfoo.sh

Esto lo ejecuta en el contexto del shell actual , no como un subconjunto .

Desde la página del hombre bash:

. nombre de archivo [argumentos]
nombre de archivo fuente [argumentos]

Lee y ejecuta comandos desde el nombre del archivo en el entorno del shell actual y devuelve el estado de salida del último comando ejecutado desde el nombre del archivo.

Si nombre de archivo no contiene una barra inclinada, los nombres de archivo en RUTA se utilizan para encontrar el directorio que contiene el nombre de archivo.

El archivo buscado en PATH no necesita ser ejecutable. Cuando bash no está en modo POSIX, se busca en el directorio actual si no se encuentra ningún archivo en PATH.

Si la opción sourcepath al comando builtin shopt está desactivada, la ruta no se busca.

Si se proporcionan argumentos, se convierten en parámetros posicionales cuando se ejecuta el nombre del archivo.

De lo contrario, los parámetros posicionales no se modifican. El estado de devolución es el estado del último comando salido dentro del script (0 si no se ejecuta ningún comando) y falso si el nombre del archivo no se encuentra o no se puede leer.

¿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

... los vars parecen permanecer en el contexto local, mientras que me gustaría seguir utilizándolos después de que el script haya terminado de ejecutarse.


Ejecute su script con .

. myscript.sh

Esto ejecutará la secuencia de comandos en el entorno de shell actual.

export qué variables estarán disponibles para los procesos nuevos, por lo que si dices

FOO=1 export BAR=2 ./runScript.sh

entonces $BAR estará disponible en el entorno de runScript.sh , pero $FOO no lo hará.


source myscript.sh también es factible.

Descripción para el source comando de Linux:

source is a Unix command that evaluates the file following the command, as a list of commands, executed in the current context


#!/bin/bash export FOO=bar

o

#!/bin/bash FOO=bar export FOO

hombre de exportación:

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 es seguido por = palabra, entonces el valor de esa variable se establecerá en palabra.


FOO=bar export FOO