Linux环境变量


title:
date: 2024-07-06 21:36:21
tags: 环境变量
cover: https://picbed0521.oss-cn-shanghai.aliyuncs.com/blogpic/PixPin_2024-07-25_22-38-03.png


原文见我的网站: www.supdriver.top

基本概念

  • 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数
  • 环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

构成:环境变量是一系列字符串的统称,所以一个环境变量由变量名构成

这么说还是太抽象了,我们接下来会举几个具体样例,体会环境变量在获取系统全局的变量,系统指令路径等方面的作用

常见环境变量

变量名功能
PATH指定命令的搜索路径
HOME指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
USER当前用户名
SHELL当前Shell,它的值通常是/bin/bash
PWD当前工作目录

操作系统变量

查看环境变量

echo $NAME NAME为变量名

PATH为例,查看PATH的值的指令为

echo $PATH

https://picbed0521.oss-cn-shanghai.aliyuncs.com/blogpic/PixPin_2024-07-08_12-46-35.png

可以看到PATH的内容为多个文件路径,互相以:分隔

而若要查看当前的全部环境变量,可以使用env指令,将当前所有环境变量打印在终端上

也可以通过管道grepenv的输出内容过滤

查看PATH

env | grep PATH

同时还有个set 指令可以显示本地定义的shell变量和环境变量环境变量的组织方式

获取进程的环境变量

  • 在程序中,可以使用getenv()接口获取对应环境变量名的对应环境变量值

getenv<stdlib.h>

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

int main()
{
    printf("PATH: %s\n",getenv("PATH"));//打印PATH的值
    return 0;
}

环境变量的组织方式

每个进程都有自己的环境表,所谓环境表就是一个字符指针数组,每个不为NULL的指针指向环境字符串

https://picbed0521.oss-cn-shanghai.aliyuncs.com/blogpic/PixPin_2024-07-08_20-52-19.png

  • 因此也可以使用main函数传参来打印所有环境变量的内容
int main(int argc,char* argv[],con char* env[])
{
    char* str;
    int i = 0;
    while(str =env[i++]) printf("%s\n",str);
    return 0;
}

导入环境变量

头文件unistd.h>提供了一个全局变量environ,因此可以用extern导入环境变量

#include <stdio.h>
#include <unistd.h>

extern char **environ;//导入换进变量

int main()
{
    const char* str;
    int i = 0;
    while(str =environ[i++]) printf("%s\n",str);
    return 0;
}

添加新的环境变量

使用export命令可以添加新的环境变量

使用方法:export``=``(变量值)

例如添加一个值为supdriver666,名为MY_VALUE的环境变量,最后查看该变量

export MY_VALUE=supdriver666

env | grep MY_VALUE

程序内设置换进变量

使用<stdlib.h>提供的putenv()接口可以设置环境变量,用法与export指令相同

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

int main()
{
    putenv("MY_VALUE=666");
    printf("MY_VALUE = %s",getenv("MY_VALUE"));
    return 0;
}

删除环境变量

使用unset可以删除环境变量

删除上文的MY_VALUE

unset MY_VALUE

env | grep MY_VALUE

可以看到没有输出了

添加本地shell变量 和 查看本地变量与环境变量

添加本地变量: 直接输入(变量名)``=``(值) //不加空格/

查看变量: 使用set命令查看本地变量与环境变量,但是内容非常多,建议搭配grep等使用

my_value=2024

set

set | grep my_value

本地变量与环境变量

二者最大的差别是环境变量可以被子进程继承,而本地变量只在本BASH内部有效,不会被继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值