【Linux】8. 环境变量

简介: 【Linux】8. 环境变量

1. 环境变量的引入

先描述一个现象,我们在执行二进制可执行程序的时候,是需要找到其所在位置的(程序要运行必须先加载到内存,是因为冯诺依曼体系结构规定CPU只能从内存中读取数据),所以这也就是为什么我们在运行前带上./的原因,可以让操作系统找到并执行对应的指令,那么这时候,我们就好奇了,那指令在执行的时候前面为啥不带./呢?
答案:操作系统需要提前做好准备工作(会将操作系统中的配置文件内的软件默认的安装路径导到内存当中),构建出一个内存级变量(环境变量PATH)
操作系统在启动shell的时候,将PATH导入到shell的上下文环境当中,在执行指令时,通过PATH当中的路径来查找指令对应的位置
在这里插入图片描述
在这里插入图片描述
上述的PATH也只是解决一个应用场景,如何查找命令的路径
操作系统中还存在许多问题?
比如说当前登录系统的用户是谁,主机名是谁,历史命令的条数是多少,显示器的配色方案是啥?
所以针对这一系列的应用场景,就需要要求操作系统在启动bash命令行解释器时,就必须预先设置好一批未来可能会用到的变量(全局变量),这批变量就叫环境变量

从解释型语言来理解环境变量:
C语言/C++中是可以定义变量的,同样的在命令行上也能进行变量的定义。
而且shell也是进程,malloc或者new是可以在运行的过程中给我们申请空间,也就意味着进程在运行期间是可以对空间进行调整的(只要存在空间就可以保存数据,所以环境变量本质上就是一段数据:"字符串"),所以环境变量的导入也就是在进程中定义或者malloc/new加载进来

2. 环境变量的概念

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数
(如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。)
环境变量通常具有某些特殊用途
在系统当中通常具有全局特性

3. 常见的环境变量

3.1 PATH

指定命令的搜索路径(详细内容看上面的引入)

3.2 USER

在这里插入图片描述
在这里插入图片描述

3.3 PWD

在这里插入图片描述

3.4 其他一些环境变量

在这里插入图片描述
环境变量存在的意义:在不同的应用场景下,可以让用户访问环境变量来达到目的(方便用户使用)

4. 和环境变量相关的命令

4.1 echo: 显示某个环境变量值

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

4.3 env: 显示所有环境变量

在这里插入图片描述
首先bash是一个系统进程,而./mycmd 运行程序后,该程序变成进程,而该进程又是bash的子进程(媒婆:王婆招实习生,创建子进程进行命令执行)
通过以上结果可以得出以下结论:
环境变量具有全局属性,是因为会被子进程继承下去(环境变量本来就是定义给bash使用的)
至于子进程为什么要继承下去呢?
--因为存在不同的应用场景(例如:让bash找指令路径PATH,用户身份识别 USER)需要子进程去完成(也就需要获取到环境变量)
==所以这时候,我们也能理解环境变量的全局性和本地变量的局部性(只在当前进程bash下有效)==
在myval 并未被导入到全局时,也就只有bash可以使用,而被导入过后其子进程也可使用

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

4.5 unset: 清除环境变量

在这里插入图片描述

5. 通过代码如何获取环境变量

5.1 命令行参数的概念

程序名+选项==命令行参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

提问

在这里插入图片描述

相关文章
|
4月前
|
Linux Shell
入职必会-开发环境搭建36-Linux常用操作-Linux环境变量
环境变量的作用是指定到哪个目录去找你输入的命令执行。环境变量的设置分为:临时设置和永久设置两种。
|
4月前
|
Java Linux
linux 对子用户配置java 环境变量
linux 对子用户配置java 环境变量
34 3
|
3月前
|
Linux Shell
在Linux中,如何设置环境变量?
在Linux中,如何设置环境变量?
|
3月前
|
Shell Linux
在Linux中,什么是环境变量?如何设置和查看环境变量?
在Linux中,什么是环境变量?如何设置和查看环境变量?
|
4月前
|
Linux
Linux环境变量及作用
Linux中的环境变量是系统配置参数,如HOME指示用户家目录,MAIL指邮件位置。`env`命令显示所有环境变量。系统有数百个变量,但了解关键的几个足够,如PATH、HOME、TERM等。环境变量由变量名和值组成,可自定义,如WORKDIR。局部变量需用`export`使其全局有效,以便其他用户使用。`su`命令用于切换用户,展示不同用户环境下变量值的差异。
Linux环境变量及作用
|
4月前
|
Ubuntu Linux Shell
Ubuntu/linux系统环境变量配置详解
理解和掌握如何配置环境变量对于使用和管理Ubuntu/Linux系统非常重要。
246 2
|
5月前
|
关系型数据库 MySQL Shell
【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
|
5月前
|
Linux Shell 编译器
Linux进程——Linux环境变量
Linux进程——Linux环境变量
37 3
|
4月前
|
Java Linux Shell
【Linux】深度解剖环境变量
【Linux】深度解剖环境变量
33 0
|
4月前
|
Shell Linux
Linux环境变量之shell中export定义全局变量和echo 变量的区别
Linux环境变量之shell中export定义全局变量和echo 变量的区别