目录
1. 环境变量的概念
2. 常见的环境变量
3. 查看环境变量
4. 和环境变量相关的命令
5. 环境变量的组织方式
6. 通过代码获取环境变量
7. 通过系统调用获取环境变量
Linux🌷
在开始今天的内容之前,先来看一幅图片吧!
不知道你们是否和我一样都有这样的疑问?
为什么 ls 和我们编写的 hello.c 生成的可执行二进制文件都是可执行的,为什么 ls 在执行时直接使
用 ls 就行,运行 hello 时还要在前面指定当前路径呢?
其实这便是环境变量在其中作祟!😉(小小形容下)
1. 环境变量的概念
环境变量(environment variables):一般是指在操作系统中用来指定操作系统运行环境的一些
参数;
如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库
在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进
行查找。
环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性;
2. 常见的环境变量
PATH : 指定命令的搜索路径
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
SHELL: 当前Shell,它的值通常是/bin/bash。
3. 查看环境变量
echo &NAME
//NAME:要查看的环境变量名称
上述为:查看系统的环境变量;
我们发现:系统的环境变量是以冒号为分隔符的;
其实在查找时是以冒号为分隔符依次查找的,如果没找到便继续查找下一个冒号分隔处的路径;
4. 和环境变量相关的命令
echo: 显示某个环境变量值或者本地变量的值;
env: 显示所有环境变量;
set: 显示本地变量和环境变量;
export: 设置一个新的环境变量,可以用于将本地变量导成环境变量;
unset: 清除环境变量和本地变量;
下面给出几个示例:
示例一:
经过上述,我们发现 hello 便可以直接运行;
注意:上述修改只在本次会话中有效;
示例二:
myval是定义的一个本地变量,通过上述语句,验证了echo、set、env等各个命令的功能和用法;
5. 环境变量的组织方式
其实环境变量也是操作系统在内存中开辟空间来对它进行存储的:
下述为存储的大致样式:
每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境
字符串,由变量名+路径组成
6. 通过代码获取环境变量
示例一:
上述main()函数中,传了两个参数,可自动进行修改,存储大致如下:
我们看到指令有很多选项,用来完成同一个命令的不同子功能,选项底层使用的就是我们的命令行
参数!!
7. 通过系统调用获取环境变量
getenv("环境变量名")
//函数getenv返回一个字符串指针,指向这个环境变量的路径
最后一点:
环境变量通常是具有全局属性的,可以被子进程继承下去。
坚持打卡!
😃