0

Hi,
Im doing a testing for taking the previous values of dbgname and export the values to the new variable (CDUMAPDBGNAME_NEW), but it doesn't output the value when i do the echo $CDUMAPDBGNAME_NEW statement. Anyone can help me on this?

#include <stdio.h>
#include <string.h>

main (int argc, char **argv)
{

char dbgname [300];
char g_route [3+1];
char g_area [3];
char command[300];
int status;
strcpy (g_route, "1000");
strcpy (g_area, "AAA");

sprintf(dbgname,"mobileup.%s.%s.debug", g_route, g_area);
//printf("mobileup.%s.%s.debug", "1000","AAA");
printf("dbgname=[%s]\n",dbgname);   
sprintf(command,"export CDUMAPDBGNAME_NEW=%s",dbgname);
printf("command=[%s]\n",command);   
status=system (command);
printf("status=[%d]\n",status); 
    return 0;

}

Edited by Dani: Formatting fixed

3
Contributors
2
Replies
4
Views
5 Years
Discussion Span
Last Post by L7Sqr
0

The problem with your approach (and the one subith86 suggests) is that the environment variables you are setting are valid only for the shell they are executed in. So when you call system or putenv you are respectively writing to a new shell that goes away after the system call or writing to the environment hosting your executable (which also goes away when your executable does).

To have a persistent environment variable you need to have that variable loaded when the shell is created (ala .bashrc ) otherwise you can only expect to use the changes you make while you are still in the current shell.

Note that if all you want is changes to be valid during your program execution then the code subith86 provided is sufficient.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.