sudo 执行的程序getenv 返回空

代码如下:

@test-accd100051:~/xx$ cat a.c
#include
#include
#define NAMEA "testBoardAddrFile"
int main(int argc, char* argv)
{
        char * p = getenv(NAMEA);
        if(NULL == p)
        {
                printf("error null.\n");
                return -1;
        }
        printf("%s\n", p);
        printf("aa\n");

        return 0;
}

想在代码中getenv "testBoardAddrFile". 执行步骤:

export testBoardAddrFile=/mnt/workspacexxx

gcc a.c -o a

sudo ./a

test@test-accd100051:~/xx$ sudo ./a
error null.

 不用sudo:

test@test-accd100051:~/xx$ ./a
/mnt/workspacexxxx
aa

这样是可以的.

那应该是sudo有问题.

解决方法: 加上-E :

test@test-accd100051:~/xx$ sudo -E ./a
/mnt/workspacexxxx
aa

 

解决了. 

你可能感兴趣的:(getenv,linux)