首页 > 代码库 > Linux中与环境变量相关的函数

Linux中与环境变量相关的函数

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被删除,所以只输出一行

Linux中与环境变量相关的函数