Saltar al contenido

importar variables de entorno en un script bash

Nuestros programadores estrellas agotaron sus reservas de café, investigando a tiempo completo por la solución, hasta que Alexis halló la contestación en Gitea así que hoy la compartimos con nosotros.

Solución:

Si las variables son realmente variables de entorno (es decir, se han exportado con export) en el entorno que invoca su script, entonces ellos haría estar disponible en su guión. Que no lo sean sugiere que no los ha exportado o que ejecuta el script desde un entorno en el que simplemente no existen ni siquiera como variables de shell.

Ejemplo:

$ cat script.sh
#!/bin/sh

echo "$hello"
$ sh script.sh

(una línea vacía de salida desde hello no existe en ninguna parte)

$ hello="hi there"
$ sh script.sh

(todavía sólo una línea vacía como salida como hello es solo una variable de shell, no una variable de entorno)

$ export hello
$ sh script.sh
hi there

Alternativamente, para configurar la variable de entorno solo para este script y no en el entorno de llamada:

$ hello="sorry, I'm busy" sh script.sh
sorry, I'm busy
$ env hello="this works too" sh script.sh
this works too

Debe asegurarse de exportar las variables de entorno a las que desea tener acceso en su secuencia de comandos antes de invocar la secuencia de comandos. ES DECIR:

Unix> export MY_TEMP=/tmp
Unix> some_script.sh

Ahora some_script.sh tendría acceso a $MY_TEMP: cuando invoca un script de shell, obtiene un nuevo entorno, con solo variables exportadas, a menos que lo “fuente” precediendo el comando del script con un punto (“.”) y un espacio, luego el nombre de su script:

Unix>  . some_script.sh  # runs in current environment

Sugerencia de depuración: incluya cerca de la parte superior de su secuencia de comandos el set comando para ver qué variables puede ver su secuencia de comandos.

No se te olvide dar visibilidad a esta noticia si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *