Linux应用 环境变量的增删查改

1、概念

在Linux系统中,环境变量是一种用来存储系统信息、用户信息以及程序运行时所需信息的变量。环境变量可以在系统启动时设置,也可以在用户登录时设置。环境变量的作用是为了让程序能够获取到一些系统或用户的信息,以便程序正确运行。

一些常用的系统环境变量:

环境变量名称作用
PATH指定可执行程序的搜索路径
HOME当前用户的主目录路径
USER当前用户的用户名
SHELL当前用户的默认shell路径
LANG指定系统默认的语言环境
PWD当前工作目录的路径
TZ指定时区
LD_LIBRARY_PATH指定动态链接库的搜索路径
JAVA_HOME指定Java安装目录路径
MANPATH指定man手册的搜索路径

2、控制台命令操作

2.1 env命令

使用env可以列出当前所有环境变量:

2.2 export命令

使用export MY_ENV="Hello"添加一个环境变量,也可以进行修改

2.3 echo命令

使用echo $MY_ENV可以打印出某个环境变量的值:

2.4 unset命令

使用unset可以删除环境变量:

2.5 永久添加环境变量

使用export等命令设置的环境变量通常只在当前会话中有效,重新启动设备后这些临时设置的环境变量会失效。如果你想要永久性地设置环境变量,可以将其添加到配置文件中,如~/.bashrc、~/.bash_profile或者/etc/profile等文件中,其中修改~/.bashrc、~/.bash_profile是针对当前用户有效,修改/etc/profile针对所有用户有效。使用以下命令向~/.bashrc添加一行内容,也可以使用vim打开文件修改:

echo 'export MY_TEST_ENV="Hello"' >> ~/.bashrc

使用source ~/.bashrc命令让修改立刻生效:

3、应用编程

3.1 编程常用接口和变量

3.1.1 getenv() 函数

获取指定环境变量的值。

char *getenv(const char *name)
  • 入参:name - 要获取的环境变量的名称
  • 返回值:成功时返回指定环境变量的值的字符串指针,失败时返回NULL
3.1.2 setenv() 函数

设置指定环境变量的值,如果不存在则创建。

int setenv(const char *name, const char *value, int overwrite)
  • 入参:name - 要设置的环境变量的名称,value - 环境变量的值,overwrite - 是否覆盖已存在的同名环境变量,0表示不覆盖
  • 返回值:成功时返回0,失败时返回-1
3.1.3 unsetenv() 函数

删除指定的环境变量。

int unsetenv(const char *name)
  • 入参:name - 要删除的环境变量的名称
  • 返回值:成功时返回0,失败时返回-1
3.1.4 environ变量

环境变量数组,通过以下声明可以获取:

extern char **environ;
清空环境变量可以通过以下赋值实现:
environ = NULL;

3.2 代码测试

编写如下测试代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

extern char **environ;

#define ENV_NAME  "MY_NUMBER"
#define ENV_VALUE "1234567"

int main(int argc, char *argv[])
{
    const char *str_val = NULL;
    
    // 打印环境变量 最多打印5个
    printf("**********system env **********\n");
    for(int i = 0; (environ[i] != NULL ) && i < 5; i++)
    {
        printf("[%d] env : %s\n", i, environ[i]);
    }

    // 创建一个新的环境变量
    printf("**********setenv**********\n");    
    if((setenv(ENV_NAME, ENV_VALUE, 0)) == -1)
    {
        printf("setenv err\n");
        return 0;
    }
    else
    {
        printf("setenv %s ok\n",  ENV_NAME);
    }

    // 获取创建的环境变量
    printf("**********getenv**********\n");
    if((str_val = getenv(ENV_NAME)) == NULL)
    {
        printf("getenv %s fail\n", ENV_NAME);
        return 0;

    }
    else
    {
        printf("getenv ok name:%s value:%s\n",  ENV_NAME, str_val);
    }

    // 删除环境变量
    printf("**********unsetenv**********\n");
    if(unsetenv(ENV_NAME) == -1)
    {
        printf("unsetenv err\n");
        return 0;
    }
    else
    {
        printf("unsetenv %s ok\n",  ENV_NAME);
    }

    // 获取创建的环境变量
    printf("**********getenv**********\n");
    if((str_val = getenv(ENV_NAME)) == NULL)
    {
        printf("getenv %s fail\n", ENV_NAME);
        return 0;

    }
    else
    {
        printf("getenv ok name:%s value:%s\n",  ENV_NAME, str_val);
    }
    
    return 0;
}

测试代码首先使用environ变量获取系统的环境变量并将前五项进行打印,然后使用setenv进行环境变量的添加,使用getenv进行环境变量的获取,使用unsetenv进行环境变量的删除,删除后再使用getenv无法获取到环境变量,测试结果如下:

4、总结

本文阐述了Linux中环境变量的一些基本概念,列出了控制台操作常用命令和应用编程常用的接口,并编写示例进行简单测试。

  • 34
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值