首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Linux】环境变量

【Linux】环境变量

作者头像
Yuzuriha
发布2026-01-14 19:15:37
发布2026-01-14 19:15:37
1250
举报
文章被收录于专栏:Linux网络Linux网络

前言: 上文我们讲到了Linux中进程的切换与进程的优先级 【Linux】进程切换与优先级-CSDN博客 本文我们来讲讲Linux中的环境变量

概念

环境变量:一般指的是在操作系统中用来指定操作系统运行环境的一些参数

就比如说我们编写的C/C++代码在连接时从来不知道我们所连接的动静态库在哪里,但是照样可以连接成功。其原因就是有环境变量帮助编译器进行查找

环境变量通常具有某些特殊用途,其在系统中还具有全局特性

命令行参数

我们知道中Linux命令中许多命令都是有对应的选项的,不同的选项对应不同的功能。那这个操作是如何实现的呢?

main函数参数

首先,让我们先来讲讲main函数。mian函数可以说是我们接触编程的第一步,但许多人可以对main函数并不了解。 main函数其实是可以有参数的。

代码语言:javascript
复制
int main(int argc,char* argv[])

第一个参数,argc:表示命名行参数的数量(包括程序名本身)

第二个参数,argv:是一个字符指针数组,储存了命令行中的每个参数

验证:

代码语言:javascript
复制
#include<stdio.h>

int main(int argc,char* argv[])
{
  for(int i=0;i<argc;i++)
  {
      printf("%s\n",argv[i]);                                                                                                                                          
  }
}

实现指令选项

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

int main(int argc,char* argv[])
{
    if(argc==2)
    {   
        char* x=argv[1];
        if(strcmp(x,"-a")==0)
            printf("执行-a功能\n");
        if(strcmp(x,"-b")==0)
            printf("执行-b功能\n");
        if(strcmp(x,"-c")==0)
            printf("执行-c功能\n");
    }   
    else
        printf("请使用:-a/-b/-c\n");
}

进程中有一张表:argv表(命令行参数表),利用此表则可以实现命令的选项的功能

认识环境变量

首先我们要执行一个程序,必须先找到它 而环境变量可以帮助我们找到其位置

使用env指令我们可以查看系统中所有的环境变量,也可以使用echo $名称,打印对应的环境变量

环境变量的格式为:名称=内容

PATH

我们先来认识一下PATH环境变量

PATH环境变量表示查找指令位置的默认路径,比如当我们执行指令:ls、cd等等指令时,bash就会使用PATH环境变量去找到指令对应的程序并执行。

我们知道系统指令的实现也是C语言,但为什么系统自己的指令可以直接执行,而我们自己写的代码却必须要 “./” 作为前缀才可以执行,PATH环境变量就是关键

理解两个问题:

1.环境变量是如何存储的呢?

bash下会形成一个环境变量表,存放各种各样的环境变量。(上面我们也讲到了bash中有一个命令行参数表,也是就是bash下有两张表)

2.环境变量一开始是从哪里来的?

bash下的环境变量表是重系统配置文件中来的(以下便是配置文件)。

认识更多环境变量

HOME

HOME环境变量,记录的是当前用户的家目录路径

代码语言:javascript
复制
root@hcss-ecs-4ce7:~# echo $HOME
/root
SHELL

表示当前使用的shell版本

代码语言:javascript
复制
root@hcss-ecs-4ce7:~# echo $SHELL
/bin/bash
USER

表示当前用户是谁

代码语言:javascript
复制
root@hcss-ecs-4ce7:~# echo $USER
root
HISTSIZE

表示Linux中记录历史命令的最大数量(既Linux的历史命令最多记录HISTSIZE条)

代码语言:javascript
复制
root@hcss-ecs-4ce7:~# echo $HISTSIZE
1000
HOSTNAME

表示当前主机的主机名

代码语言:javascript
复制
root@hcss-ecs-4ce7:~# echo $HOSTNAME
hcss-ecs-4ce7
PWD

记录当前所在的工作路径

代码语言:javascript
复制
hyc@hcss-ecs-4ce7:~/linux/progress$ echo $PWD
/home/hyc/linux/progress
OLDPWD

记录上一次的工作路径

代码语言:javascript
复制
hyc@hcss-ecs-4ce7:~/linux/progress$ echo $OLDPWD
/home/hyc/linux

环境变量的获取方式

指令

env:查看全部的环境变量

echo $xxx:查看某个环境变量

expot:添加环境变量

unset:删除环境变量

代码

调用系统调用:getenv获取环境变量

头文件为:#include<stdlib.h>

返回值:获取成功返回指针,失败返回NULL

代码语言:javascript
复制
#include<stdio.h>
#include <stdlib.h>

int main()
{
    char* str=getenv("PATH");                                                                                                                                          
    if(!str)
        printf("获取失败");
    else
        printf("%s\n",str);
}

环境变量特性

1.环境变量具有全局性,可以被子进程继承,同一个bash下的进程都可以访问

2.存在本地变量,只能在bash内部使用。如下:i 就是本地变量

3.export添加环境变量,是添加在bash中的,再子进程继承达到全局可用

export命令与其他命令不同:export命令是内键命令:既不需要创建子进程,bash自己调用函数执行(或系统调用完成)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概念
  • 命令行参数
    • main函数参数
    • 实现指令选项
  • 认识环境变量
    • PATH
  • 认识更多环境变量
    • HOME
    • SHELL
    • USER
    • HISTSIZE
    • HOSTNAME
    • PWD
    • OLDPWD
  • 环境变量的获取方式
    • 指令
    • 代码
  • 环境变量特性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档