环境变量(p49)
在操作系统中用来指定操作系统运行环境的一些参数 本质:字符串 格式:名=值[:值],多个值用:号隔开 值用来描述进程环境信息 存储形式:char*[]数组,数组名:environ,内部存储字符串,NULL结尾 引入环境变量表:声明环境变量:extern char**environ; PATH变量中保存了可执行文件的搜索路径,使用“:”隔开 解释当前所使用的命令解释器:echo $SHELL 查看家目录:echo $HOME 查看所使用的语言:echo $LANG 在命令终端访问环境变量: 查看:echo $变量名 定义:变量名=变量值 删除:unset 变量名
在c语言中:
获取环境变量:
#include <stdlib.h>
char * getenv ( const char * name) ;
成功:返回一个指向环境变量的指针,失败:返回NULL
改变或增加一个环境变量:
int setenv ( const char * name, const char * value, int overwrite) ;
overwrite:0 时不覆盖,非0 时覆盖
成功:返回0 ,失败:返回- 1
改变或增加环境变量:
int putenv ( char * string) ;
string: 要改变或增加的环境变量表达式
成功:返回0 ,失败:返回- 1
删除一个环境变量:
void unsetenv ( const char * name) ;
注意:无此name时不会报错,不符合命名规则时报错
成功:返回0 ,失败:返回- 1
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
extern char * * environ;
int main ( )
{
for ( int i = 0 ; environ[ i] != NULL ; i++ )
{
printf ( "environ[%d] = %s\n" , i, environ[ i] ) ;
}
return 0 ;
}
#include <stdio.h>
#include <stdlib.h>
int main ( )
{
const char * name = "USER" ;
char * get = getenv ( name) ;
if ( get != NULL )
{
printf ( "getenv = %s\n" , get) ;
}
else
{
printf ( "没有环境变量\n" ) ;
}
const char * name1 = "creat_env" ;
int set = setenv ( name1, "zjl-xwa" , 1 ) ;
if ( set == 0 )
{
printf ( "环境变量创建成功\n" ) ;
}
else
{
printf ( "环境变量创建失败!!!\n" ) ;
}
char * getname = getenv ( name1) ;
if ( getname != NULL )
{
printf ( "新的环境变量是 : %s\n" , getname) ;
}
else
{
printf ( "没有环境变量\n" ) ;
}
int del_env = unsetenv ( name1) ;
{
if ( del_env == 0 )
{
printf ( "%s:变量删除成功\n" , name1) ;
}
else
{
printf ( "%s:变量删除失败\n" , name1) ;
}
}
}