当execle执行bash时如何设置环境变量?

时间:2017-04-05 23:35:36

标签: bash environment-variables exec sudo

这里我尝试使用execle()生成bash,并希望为新的bash设置TMOUT环境。 它运作良好。 我可以从新的bash shell中看到TMOUT环境变量。

<example1>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(void)
{
    char *env[] = {"TMOUT=60", NULL};

    execle("/bin/bash", "bash", NULL, env);
    return 0;
}

但是如果我像example2一样使用sudo,我就看不到新shell中的TMOUT环境变量了。

<example2>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(void)
{
    char *env[] = {"TMOUT=60", NULL};

    execle("/bin/sudo", "sudo", "/bin/bash", NULL, NULL);
    return 0;
}

我试图从这里找到一些这样的例子。 我可以在上面找到有关example1的一些信息。 但我找不到关于example2的好信息。

我还尝试使用putenv()。

<example3>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(void)
{
    putenv("TMOUT=60");
    execle("/bin/sudo", "sudo", "/bin/bash", NULL, NULL);
    return 0;
}

但是这个例子3也没有用。 当我像这样使用sudo时,你能告诉我如何设置环境吗?

0 个答案:

没有答案