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被删除,所以只输出一行
阅读(754) | 评论(0) | 转发(0) |