目录
- 前言
- 一、什么是环境变量?
- 二、查看环境变量的方法
- 三、查看环境变量的内容
- 四、普通变量VS环境变量
- 五、导出环境变量
- 六、常见的环境变量
- 七、set命令:查看普通变量或环境变量
- 八、C/C++语言中main函数中的参数
- 1、main函数的第一个和第二个参数
- 应用:写一个简单的命令行版本的计算器
- 2、main函数的第三个参数
- 九、获取环境变量的方式
- 1、通过main函数的第三个参数
- 2、通过environ变量
- 3、通过系统调用接口getenv
- 总结
前言
我们在Linux系统中进行操作的时候通常会发现,当我们使用系统的命令的时候,比如:
ls,pwd,cd
等等,通常不需要带对应的命令的路径,只需要直接敲对应的命令即可,而当我们运行自己写的程序的时候却发现必须带相关路径,如果没带路径,就会报出:command not found的错误,其实也很好理解,因为我们要执行一个命令或者程序首先肯定要找到这个程序或者命令,知道这个程序或者路径在哪里,才能够执行它,而系统中的命令不需要带路径就能执行的原因跟今天要学习的环境变量中的PATH变量有关系
一、什么是环境变量?
环境变量:环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数(变量),如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库(后面学)在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。还有其他用途等后面学完了常见的环境变量就能够理解了,环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性
二、查看环境变量的方法
- env:用于查看系统中所有环境变量的命令
- 也可以使用env配合之前学习的文本行过滤工具:比如
env|grep PATH
,这样可以方便找到我们想要的环境变量
三、查看环境变量的内容
通常环境变量都会存储相应的值,比如:PATH环境变量存储的是常用指令的路径,方便系统快速找到对应命令的路径,从而执行对应命令
比如,现在在系统中有一个环境变量叫做PATH,那么我们该怎么查看这个环境变量的内容呢?
我们可以采用echo命令
- 如果只是echo 环境变量
显然结果不对 - 正确的方式:echo $环境变量,如:
echo $PATH
四、普通变量VS环境变量
- 普通变量:直接在命令行上定义的变量
如上的aaaa就是一个局部变量,或者称为普通变量,可以通过echo $变量名
需要知道的是,它是不能通过环境变量找到的
- 环境变量:上面已经介绍过环境变量的概念,也介绍了查看系统环境变量的方法,其在系统中的展示方法通常为,环境变量=值:值….,环境变量中不同的值是通过:隔开的
五、导出环境变量
Linux系统中导出环境变量的方法是使用export命令,使用方法:export 环境变量名=环境变量的值,比如:export bbbb=1,意思为:导出一个环境变量为bbbb,这个环境变量的值为1
六、常见的环境变量
以上圈出的就是常见的环境变量,下面逐一进行讲解
- HOSTNAME:查看当前主机的类型
- SHELL:查看SHELL
- HISTSIZE:查看能够存储的历史命令的最大条数
- SSH_CLIENT:查看IP地址
- USER:查看正在使用Linux系统的人
- PATH:查看一些常见的命令存放的路径
测试PATH:
-
创建一个path.c文件和makefile文件
-
编译形成可执行程序
-
运行可执行程序,这里需要知道我们如果加上路径(./path)那么程序就可以正常运行,但是如果没有加入路径的话,那就不能正常运行该程序
- 那么应该怎么处理,才能够让我们不加入可执行程序的路径也能够使程序正常运行呢??
- 将可执行程序的路径加入PATH环境变量中:通过export $PATH=PATH:当前可执行程序的路径
- 使用echo命令查看加入路径之后的PATH环境变量
- 运行可执行程序 :此时执行的命令不再需要加入可执行程序的路径了
- PWD:查看当前的路径
- HOME:查看当前用户的家目录
七、set命令:查看普通变量或环境变量
- 查看普通变量
- 查看环境变量
八、C/C++语言中main函数中的参数
我们平时在写C语言或者C++语言中的main函数时一般是不带参数的,但是实际上,main函数是可以带三个参数的,下面将详细讲解相关参数的作用
- 一般情况
- 带参数的情况
1、main函数的第一个和第二个参数
- 第一个参数argc:表示argv数组中存放的字符指针个数
- 第二个参数argv:存储的是相关的字符指针,指针指向的是一个个的字符串
- 将main中的路径加入环境变量使运行可执行程序时不需要加入路径
通过以上的实验结果,我们可以看到数组中的第一个指针指向的内容(字符串)是可执行程序文件的名字,接下来我们可以加入一些选项来丰富实验内容 - 加入选项-a-b-c-d
从实验结果可以看出来,数组中的第一个指针指向的内容是可执行程序的文件名,第二个开始的指针指向的内容是依次加入后的选项
应用:写一个简单的命令行版本的计算器
-
建立一个cal项目
-
创建cal.c文件和makefile文件
-
使用
在这个简单的命令行计算器的代码中需要注意一些点: -
命令行参数均为字符串,因此,在键盘上获得的数字也是字符串,所以在进行计算之前一定要先使用atoi将其转化为整数
-
在代码中可以加入该计算器的使用方法
2、main函数的第三个参数
main函数的第三个参数叫做env,叫做环境变量
- 创建一个项目
- 创建main.c文件和makefile文件
- 结果显示
从上面的实验结果我们可以看到,查看系统中的环境变量除了采用env命令进行查看之外还可以通过C语言函数中的main函数的第三个参数进行查看
九、获取环境变量的方式
1、通过main函数的第三个参数
通过main函数的第三个参数查看到系统中所有的环境变量之后,可通过echo $环境变量进行查看获取
2、通过environ变量
envion是系统指定的一个变量
通过这个方法同样可以将系统中的所有环境变量显示出来
3、通过系统调用接口getenv
- 查看getenv系统调用接口
- 创建test.c文件和makefile文件
在使用getenv系统接口的时候一定要注意包含头文件stdlib.h - 实验结果
总结
今天我们主要学习环境变量的相关概念,以及学习了如何查看系统中所有的环境变量和查看具体环境变量的内容,还有学习如何导出新的环境变量和将自己写好的可执行程序的路径加入PATH环境变量,最后还介绍了获取环境变量的几种常见的方式,在介绍之前还学习了C/C++中main函数的参数的意义和作用