解析环境变量

一、概念

     一般是指在操作系统中用来指定操作系统运行环境的一些参数。它具有某些特殊用途,在操作系统中通常具有全局属性,并且可以被子进程继承下去

二、常见环境变量

环境变量名称含义
PATH指定命令的搜索路径
HOME指定用户的主工作目录(即用户登录到Linux系统中时,默认的目录)
HISTSIZE保存历史命令记录的条数
SHELL当前shell,通常是 /bin/bash
HOSTNAME主机的名称

三、相关命令

命令用途用法
echo显示某个环境变量的值echo $环境变量名称
env显示所有环境变量env
set显示本地定义的shell变量和环境变量set
unset清除环境变量unset 环境变量名称
export设置一个新的环境变量export 环境变量名称=…

四、代码中如何获取、修改环境变量

1. 命令行第三个参数

#include <stdio.h>

int main(int argc, char* argv[], char *env[])
{
    int i = 0;
    while(env[i] != NULL)
    {   
        printf("%s\n", env[i]);
        i++;
    }   
    return 0;
}

2. 第三方变量:environ

#include <stdio.h>

int main(int argc, char* argv[])
{
    extern char** environ;
    // libc中定义的全局变量environ指向环境变量表,由于environ没有包含在任何头文件中,所以在使用时,要用extern声明
    int i = 0;
    while(environ[i] != NULL)
    {   
        printf("%s\n", environ[i]);
        i++;
    }
    return 0;
}

3. 系统调用

(1)getenv
  • 函数原型: char *getenv(const char *name);
  • 功能:在环境列表中查找环境变量,并返回指向相应值字符串的指针
  • 返回值:返回指向环境变量内容的指针,如果不匹配,则返回NULL
#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("PATH = %s\n", getenv("PATH"));
    return 0;
}
(2)putenv
  • 函数原型: int putenv(char *string);
  • 功能
         添加或更改环境变量的值,参数 string 的形式为 name=value 。如果环境列表中不存在该环境变量,则将字符串添加到环境列表中;如果确实存在,则环境列表中的名称值将更改为value。由于参数 string 中的 value 会成为环境列表的一部分,因此更改字符串会改变环境列表。
  • 返回值:成功时返回零,如果出现错误,则返回非零
#include <stdio.h>
#include <stdlib.h>

int main()
{
    putenv("USER=Tom");
    printf("USER = %s\n", getenv("USER"));
    return 0;  
}
(3)setenv
  • 函数原型: int setenv(const char *name, const char *value, int overwrite);
  • 功能
         如果该环境变量 name 不存在,则会将环境变量名与值一起添加到环境列表中。如果环境列表环境中确实存在该环境变量,此时,如果 overwrite 不为0,则改变环境变量原有内容,原有内容会被改为参数 value 所指的变量内容;如果 overwrite 为0,则原有内容不变。
  • 返回值:成功时返回零,如果环境列表中没有足够的空间,则返回 -1
#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("USER = %s\n", getenv("USER"));
    
    setenv("USER", "Jerry", 0); 
    printf("USER = %s\n", getenv("USER"));
    
    setenv("USER", "Jerry", 1); 
    printf("USER = %s\n", getenv("USER"));
    return 0;
}

运行结果:
在这里插入图片描述

(4)unsetenv
  • 函数原型: int unsetenv(const char *name);
  • 功能:从环境列表中删除变量名,如果环境列表中不存在该环境变量 name,则该功能成功,并且环境列表不变
  • 返回值:成功时返回零,出错时返回 -1
#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("USER = %s\n", getenv("USER"));

    unsetenv("USER");
    printf("USER = %s\n", getenv("USER"));
    
    return 0;
}

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值