Cómo Cargar Variables de Entorno en un Script desde Otro Archivo

En cada sistema operativo hay una forma de configurar variables que estarán disponibles a nivel global. En Linux, y para el caso de los scripts que se escriben en Bash, se puede acceder a las variables de entorno que se hayan configurado previamente.

Las variables de entorno se pueden crear de varias formas. Se pueden colocar en el archivo .profile, .bash_profile, o antes de ejecutar un comando al declarar la variable antes del comando, ejemplo:

$ RAILS_ENV=production rake assets:precompile

Puede que la variable de entorno RAILS_ENV no esté definida al momento de ejecutar el comando pero cuando se definir al ejecutar el comando, estará disponible durante la ejecución del mismo.

Cuando se escriben scripts en Bash, sea para automatizar tareas, para complementar los despliegues de un software o por lo que sea, usar variables de entorno puede ocurrir de manera que se lean las ya definidas en el sistema o agregar nuevas.

Cuando se agregan nuevas variables, y dado el caso(como me pasó a mí), puede que llegue a haber muchas, lo que termina ensuciando el script con definición de variables.

Para dejar el script limpio se puede optar por crear un archivo que contenga las variables(sino están en los mencionados anteriormente) y cargarlas desde este. De la siguiente forma:

# archivo_con_vars

ENV_VAR_1=hola
ENV_VAR_2=mund

Mi primera equivocación fue pensar que se podían importar esas variables leyendo el archivo y de una u otra forma definir las variables dentro del script pero así no funcionaba. En realidad la forma correcta es bastante sencilla.

La forma correcta consiste en cargar el archivo en el inicio del script. Al cargarlo hará que estén disponibles solo mientras se ejecuta el mismo. Se logra así:

# script.sh

#!/bin/bash

source ./archivo_con_var

# código del script…

En vez de source también se puede usar la notación con un punto: . ./archivo_con_var y pasará lo mismo. De estas dos formas se puede importar variables de entorno en un script en Bash desde un archivo separado.

Autor: cesc1989

Ingeniero de Sistemas que le gusta escribir y compartir sobre recursos que considera útiles, además que le gusta leer manga y ver anime.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .