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.