指令
用export 指令可导入环境变量,那么当bash导入后,通过该bash执行的子进程都有该环境变量,因为环境变量是可以被继承的。用法 export KEY=VALUE , key 该环境变量的名字,value 环境变量的值。
函数
putenv/setenv , 都可以设置环境变量,它们的区别是:
setenv设置环境变量的时候,直接拷贝一份参数 string 字符串,并把拷贝后的字符串的地址放置到环境变量的数组中。
putenv , 并不做拷贝直接把你给的参数,放到环境变量的数组中。如果该参数字符串是在栈上,那么当栈被释放后,该环境变量就被析构了,就找不到该环境变量了。所以用putenv 的字符串不应该在栈上开辟。
当环境变量遇上exec族函数
当它们遇到exec族函数的时候,无论 setenv/putenv , 它们设置的环境变量都会完好无缺的被留下,即使putenv 设置的环境变量在栈上,只要该字符串没被释放,调用exec族函数,该环境变量一直存在进程中。
exec族函数,虽然会替换掉进程的代码段和数据,但是不会替换掉环境变量。