> 文章列表 > 【hello Linux】环境变量

【hello Linux】环境变量

【hello Linux】环境变量

目录

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返回一个字符串指针,指向这个环境变量的路径

最后一点: 

环境变量通常是具有全局属性的,可以被子进程继承下去。

坚持打卡!

😃