【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

相关推荐
陈希1231 小时前
Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位
linux·服务器·网络
测试界的小码农4 小时前
【Linux 命令实战(03):文件创建、复制、移动与删除,掌握 touch、mkdir、cp、mv、rm】
linux·服务器·php
byte轻骑兵5 小时前
实战 1:修改 BlueZ 源码,添加自定义开机日志
linux·aiot·bluez·电脑蓝牙·嵌入式蓝牙
叼烟扛炮5 小时前
Linux 学习笔记(五十):网络层——IP 协议、子网划分与 NAT 魔法
linux·笔记·学习
叼烟扛炮5 小时前
Linux 学习笔记(六十):单线程的逆袭——epoll 高并发服务器实战
linux·服务器·网络·笔记·学习·算法
AR-26710-6 小时前
Linux Day32——实操五类资源告急排查
linux·运维
StarsGreen6 小时前
libva中的图像格式说明
linux
H.莓飛7 小时前
【C++】【STL】vector_OJ题
linux·服务器·开发语言·数据结构·c++·visual studio
Rabitebla7 小时前
【Linux操作系统】进程篇(十一):进程程序替换——从底层原理到 exec 函数族
linux·服务器·c++·笔记·学习·算法
无人生还别怕8 小时前
如何搭建docker仓库(轻量级)registry
linux·运维·docker·云原生·容器·registry·openanolisos