1、在终端可以通过env、set命令查看当前的环境变量
2、通过main函数中的第三个参数可以得到当前进程的环境变量列表
int main(int argc , char *argv[] , char *env[]);
其中argv和env是一个指针数组,数组的最后一个元素为NULL
3、打印当前进程的环境变量
int main(int argc , char *argv[] , char *env[]){ char **p = env; while(*p){ PRintf("%s/n",*env); env++; }}
4、getenv获得指定的环境变量
char * getenv("环境变量名")
int main(){ char * p = getenv("PATH"); if(p){ printf("%s",p); } else{ return; } }
5、putenv设置环境变量
int main(int argc , char ** argv , char **env){ printf("%s/n",getenv("PATH")); putenv("PATH=/home/hello"); printf("%s/n",getenv("PATH"));}
输出结果:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin/home/hello
6、setenv设置环境变量
首先要说明的是,通过此函数并不能添加或修改 shell 进程的环境变量,或者说通过setenv函数设置的环境变量只在本进程,而且是本次执行中有效。如果在某一次运行程序时执行了setenv函数,进程终止后再次运行该程序,上次的设置是无效的,上次设置的环境变量是不能读到的
setenv("变量名","新变量值","是否重写")
int main(int argc , char ** argv , char **env){ printf("%s/n",getenv("PATH")); int res = setenv("PATH","/home/hello",1); //第三个参数为1代表重写 if(res == -1) return; printf("%s/n",getenv("PATH"));}
输出结果:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/home/hello
若第三个参数为0,即环境变量已经存在,则并不改变它的值
输出结果:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
7、unsetenv删除某个环境变量
unsetenv("环境变量名")
int main(int argc , char ** argv , char **env){ printf("%s/n",getenv("PATH")); unsetenv("PATH"); printf("%s/n",getenv("PATH"));}
输出结果:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PATH被删除,所以只输出一行
新闻热点
疑难解答