Man 文档阅读 - environ.7
在 C 程序中,environ
是用户的环境变量。它是一个指向 char** 的指针,指向的数组的最后一个元素是 NULL。当 exec 启动一个进程的时候,进程会被塞入一个字符串数组作为环境变量。当 fork 出一个子进程的时候,子进程会拿到父进程的环境变量的拷贝。当进程运行的时候,可以通过 getenv, putenv, setenv 和 unsetenv 来操作环境变量。
Shell 环境中可以用 export (sh), setenv (csh) 设置环境变量。Shell 的初始环境变量在 /etc/environment 中配置,所有用户登录时会读取。另外,系统全局的配置 /etc/profile 和用户个人的配置也会被加进来。Bourne-style 的风格是用 name=value
这样的格式。
很多函数其实都会被环境变量影响到,例如 MALLOC_*
会影响 malloc()
, LD_*
会影响动态加载器 ld。需要注意到,有些环境变量 LD_LIBRARY_PATH
可能会造出安全隐患。make
和 autoconf
在有些场景里面会用大写变量代替命令工具,例如 CC, LD, LEX 等,这可能会引起名字冲突。