我正在尝试在 C 中使用 execle() 来执行 /bin/login 并将环境变量传递给目标 shell。并且不能让它工作。
我已经尝试通过手册页中描述的环境作为 VAR=VAL 字符串的 NULL 终止数组。我也在通话前尝试了 putenv() 。
例如:
const char *env[] = { "MYVAR=myval", (char *)0 };
putenv("MYVAR=myval");
execle("/bin/login", "login", "-p", "-f", user, (char *)0, env);
成功登录后,我希望将 MYVAR 视为环境变量,但只有变量,如 USER、HOME、SHELL、PATH 等。
我尝试过使用 BusyBox 登录和使用 tinylogin ......结果相同。
非常感谢任何帮助。