Linux(环境变量)
- 常见环境变量
- 查看环境变量方法
- 和环境变量相关的指令
- 环境变量的组织方式
- 通过代码如何获取环境变量
- 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。
- 环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性。
常见环境变量
- PATH : 指定命令的搜索路径。
- HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)。
- SHELL : 当前Shell,它的值通常是/bin/bash。
查看环境变量方法
echo $NAME //NAME:你的环境变量名称
比如查看PATH:
我们平常使用过程中可以发现,在Linux中运行我们自己生成的可执行程序是需要加./的,但是像ls这些指令,直接输入就可以,那么这是为什么呢?
因为系统就是通过环境变量PATH来找到ls命令的,可以看到环境变量PATH当中有多条路径,这些路径由冒号隔开,当你使用ls命令时,系统就会查看环境变量PATH,然后默认从左到右依次在各个路径当中进行查找。而ls命令实际就位于PATH当中的某一个路径下,所以就算ls命令不带路径执行,系统也是能够找到的。而我们的mytest并不在此路径下。
但是我们也可以让我们自己的可执行程序也不用带路径就可以执行:
环境变量HOME当中即保存的该用户的主工作目录:
测试SHELL:
Linux操作系统当中所敲的各种命令,实际上需要由命令行解释器进行解释,而在Linux当中有许多种命令行解释器(例如bash、sh),我们可以通过查看环境变量SHELL来知道自己当前所用的命令行解释器的种类。而该命令行解释器实际上是系统当中的一条命令,当这个命令运行起来变成进程后就可以为我们进行命令行解释。
和环境变量相关的指令
- echo: 显示某个环境变量值
- export: 设置一个新的环境变量
- env: 显示所有环境变量
- unset: 清除环境变量
- set: 显示本地定义的shell变量和环境变量
环境变量的组织方式
每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串。
通过代码如何获取环境变量
1.命令行的三个参数
main函数其实有三个参数,只是我们平时基本不用它们,所以一般情况下都没有写出来。
int main(int argc, char *argv[], char *env[])
main函数的第三个参数接收的实际上就是环境变量表,我们可以通过main函数的第三个参数来获取系统的环境变量。
2.通过第三方变量environ获取
现在我们来说说main函数的前两个参数,main函数的第二个参数是一个字符指针数组,数组当中的第一个字符指针存储的是可执行程序的位置,其余字符指针存储的是所给的若干选项,最后一个字符指针为空,而main函数的第一个参数代表的就是字符指针数组当中的有效元素个数。