【Linux】环境变量:系统运行参数的“备忘录”

环境变量是操作系统用来存储配置信息的一套机制。它的全局性和继承性,可以使很多系统行为在不硬编码的情况下完成。

目录

[1. 常见环境变量](#1. 常见环境变量)

[2. PATH 实战:让自定义程序全局可用](#2. PATH 实战:让自定义程序全局可用)

[3. 环境变量的组织与获取](#3. 环境变量的组织与获取)

[4. 环境变量的全局性与继承性](#4. 环境变量的全局性与继承性)


1. 常见环境变量

  • PATH :可执行程序的搜索路径列表。我们在终端敲 ls 而不写 /usr/bin/ls,就是因为 /usr/bin 在 PATH 里。

  • HOME :当前用户的主目录,cd ~ 等价于 cd $HOME。

  • SHELL :当前使用的 shell,通常是 /bin/bash。

查看环境变量:

bash

复制代码
echo $PATH
echo $HOME
env        # 显示所有环境变量

2. PATH 实战:让自定义程序全局可用

写一个 hello.c 编译成 hello,直接执行会提示找不到命令。原因就是当前目录不在 PATH 中。

bash

复制代码
./hello                           # OK
hello                             # command not found
export PATH=$PATH:/path/to/hello  # 临时加入 PATH
hello                             # OK

export 将变量提升为环境变量,使其能被子进程继承。永久修改需要写入 ~/.bashrc 或 ~/.bash_profile。

3. 环境变量的组织与获取

环境变量在内存中是一个字符指针数组,每个指针指向一个 "KEY=value" 形式的字符串,最后一个元素为 NULL。C 程序可以通过三种方式访问:

  1. main 函数的第三个参数(不常用但可以了解原理):

c

复制代码
int main(int argc, char *argv[], char *env[]) {
    for (int i = 0; env[i]; i++)
        printf("%s\n", env[i]);
    return 0;
}
  1. 全局变量 environ(推荐):

c

复制代码
extern char **environ;
for (int i = 0; environ[i]; i++)
    printf("%s\n", environ[i]);
  1. 标准库函数 getenv/setenv(最方便):

c

复制代码
#include <stdlib.h>
printf("PATH=%s\n", getenv("PATH"));

4. 环境变量的全局性与继承性

用 export MYVAR=hello 设置环境变量,子进程就能通过 getenv("MYVAR") 拿到它。如果直接写 MYVAR=hello 而不 export,变量只是当前 shell 的局部变量,不会被 fork 的子进程继承。

环境变量之所以有全局属性,是因为 fork 时子进程会复制父进程的环境表。这个简单的设计,却支撑起了系统级配置传递的基础机制。

相关推荐
꯭自꯭闭꯭8 小时前
达梦DMDSC主备搭建
linux·服务器·数据库
硅基手札8 小时前
MCP 实战 —— 从零写一个 CRC16 服务器(保姆级)
运维·服务器·ai
AI备忘录8 小时前
(二十三)华为华三锐捷迈普思科 MLAG 跨设备配置命令(双活网关五厂商对照)
服务器·网络·华为
打工仔折腾 AI8 小时前
把模型切换交给平台:用蓝耘智能路由搭建商品评论分析工具
java·服务器·前端·后端·python·性能优化·ai agent 实战
今年下半年8 小时前
【运维】windows虚拟机安装arm(aarch64)服务器
运维·windows·arm·虚拟机·aarch64
杨云龙UP8 小时前
TDengine Community 超级表建表实战:统一21个TAG与DOUBLE/字符串数据模板
运维·服务器·数据库·时序数据库·tdengine·涛思数据·stable建表
墨家句子8 小时前
AnythingLLM 搭本地知识库:文档问答不准怎么调
linux·后端
高山有多高8 小时前
【Linux笔记】冯诺依曼体系结构
linux·运维·笔记
katasea9 小时前
第05章:信创技术栈选型:服务器、操作系统、数据库、中间件适配对比
服务器·数据库·中间件
筑梦之路9 小时前
Alibaba Cloud Linux 4 IPXE全自动安装(直连官方源)——筑梦之路
linux·运维·服务器·国产化·阿里云操作系统