【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

相关推荐
Web3探索者15 小时前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo17 小时前
Linux系统中网线与USB网络共享冲突
linux
Sokach10152 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao3 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3104 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode4 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
A小辣椒6 天前
TShark:Wireshark CLI 功能
linux
A小辣椒6 天前
TShark:基础知识
linux
AlfredZhao6 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao7 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi