Aquí escribí un programa C que ejecuta el archivo hi.sh
usando la llamada system
.Obtener variables de entorno usando el código C
Aquí utilicé . ./hi.sh
así que quiero ejecutar este script en el mismo shell y luego tratar de obtener la variable de entorno usando la función getenv, pero aquí obtengo resultados diferentes de los que esperaba.
El archivo hi.sh
contiene
export TEST=10
return
significa que cuando corro este archivo hi.sh
usando la llamada sistema, su export TEST
establece el valor en 10 en la misma carcasa. Después de esto, estoy tratando de obtener este valor variable, pero se le da valor NULL
.
Y si ejecuto este script manualmente desde la consola como . ./hi.sh
entonces funciona bien y obtengo el valor 10 de TEST
usando la función getenv("TEST")
.
Código:
#include <stdio.h>
int main()
{
system(". ./hi.sh");
char *errcode;
char *env = "TEST";
int errCode;
errcode = getenv(env);
printf("Value is = %s\n",errcode);
if (errcode != NULL) {
errCode =atoi(errcode);
printf("Value is = %d\n",errCode);
}
}
de salida:
Value is = (null)
¿Cómo puedo exportar variable de prueba en el programa de shell? Si system()
ejecuta comandos en un shell diferente, entonces, ¿cómo puedo usar el código del programa C para obtener una variable de entorno que es exportada por el shell invocado a través de una llamada system()
?
Entonces, ¿cómo puedo lograr este objetivo? – user1089679
¿Cómo puedo exportar la variable TEST para programar Shell? – user1089679
@ user1089679 Fuente su script (configurar el entorno) antes de ejecutar su programa C. Así es como se diseñaron las variables de entorno para su uso. –