【linux】linux中的环境变量

一、环境变量的基本概念

环境变量是系统提供的一组name = value形式的变量,不同的环境变量有不同的用户,通常具有全局属性。

二、常见环境变量
1、PATH : 指定命令的搜索路径。

路径之间用分号(:)分隔。
为什么有些指令可以直接执行,不需要带路径,而我们的二进制程序需要带路径才能执行呢?

将我们的程序所在路径加入环境变量PATH中,export PATH=$PATH:当前程序所在路径。
注意:等于号(=)左右两边不能有空格。

这样就可以用mycmd来执行我们的二进制程序了,不需添加额外的路径。
注意:当我们关闭Xshell后重新启动时,之前的修改就没有了,即上述命令仅在当前会话中生效。

2、HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)。
普通用户:

超级用户:

~ 和 HOME 指向的是同一个位置。
3、SHELL : 当前Shell,它的值通常是/bin/bash。

三、和环境变量相关的命令

1、echo:显示某个环境变量值

2、export:设置一个新的环境变量

3、env:显示所有的环境变量

4、unset:清除环境变量

原本在箭头处的环境变量不存在了。

5、set:显示本地定义的shell变量和环境变量

仅展示部分截图。

四、环境变量的组织方式


每个程序都会收到一张环境变量表,环境变量表是一个字符指针数组,每个指针指向一个以'\0'结尾的环境字符串。
五、如何通过代码获取环境变量
1、命令行参数

为什么要有命令行参数呢?
为指令、工具、软件等提供命令行选项的支持。


两张核心向量表:
1)命令行参数表:char *argv[](argc为表中字符串的个数)
2)环境变量表:char *env[]
2、通过第三方变量environ获取

全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时要用extern声明。
3、通过系统调用获取指定的环境变量


六、环境变量通常是具有全局属性的

我们所运行的进程都是子进程,bash本身在启动的时候,会从操作系统的配置文件中读取环境变量的信息,子进程会继承父进程的环境变量。

显而易见,子进程继承了父进程的环境变量。

七、本地变量和内建命令

**1、本地变量:**只会在本bash内部有效,不会被继承。

添加export子进程就会继承父进程的环境变量,不添加export就不会被子进程继承。

2、两批命令:

1)常规命令:通过创建子进程完成的。eg: ls, env

2)内建命令:bash不创建子进程,而是由自己亲自执行,类似于bash调用了自己写的,或者系统提供的函数。eg: cd , echo, export

相关推荐
zhouwy1139 分钟前
Linux系统管理命令大全
linux·运维
zhangrelay32 分钟前
三分钟云课实践速通--单片机原理与应用--Arduino--SimulIDE--
linux·单片机·嵌入式硬件·学习·ubuntu
zzzyyy5381 小时前
Linux之缓冲区
linux·运维·服务器
hwscom1 小时前
Linux服务器如何进行安全加固,防止黑客攻击(Windows也适用)
linux·服务器·安全
lzh200409191 小时前
Linux管道(Pipe)深度指南:从原理到实战
linux·c++
liann1191 小时前
3.4_Linux 应急响应排查速查命令表
linux·运维·服务器·安全·网络安全·系统安全
孪生质数-1 小时前
Linux高危漏洞通报Copy Fail - CVE-2026-31431
linux·运维·服务器·ubuntu·网络安全·debian·cve-2026-31431
IMPYLH1 小时前
Linux 的 tee 命令
linux·运维·服务器·bash
lzh200409191 小时前
Linux信号(Signal)
linux·c++
蓝天居士2 小时前
Linux网络驱动之Fixed-Link(29)
linux·运维·网络