Linux(环境变量)

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并不在此路径下。
Linux(环境变量)_第1张图片
但是我们也可以让我们自己的可执行程序也不用带路径就可以执行:
Linux(环境变量)_第2张图片

环境变量HOME当中即保存的该用户的主工作目录:
Linux(环境变量)_第3张图片

测试SHELL:
Linux操作系统当中所敲的各种命令,实际上需要由命令行解释器进行解释,而在Linux当中有许多种命令行解释器(例如bash、sh),我们可以通过查看环境变量SHELL来知道自己当前所用的命令行解释器的种类。而该命令行解释器实际上是系统当中的一条命令,当这个命令运行起来变成进程后就可以为我们进行命令行解释。
在这里插入图片描述

和环境变量相关的指令

  • echo: 显示某个环境变量值
  • export: 设置一个新的环境变量
  • env: 显示所有环境变量
  • unset: 清除环境变量
  • set: 显示本地定义的shell变量和环境变量

环境变量的组织方式

Linux(环境变量)_第4张图片

每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串。

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

1.命令行的三个参数
main函数其实有三个参数,只是我们平时基本不用它们,所以一般情况下都没有写出来。

int main(int argc, char *argv[], char *env[])

main函数的第三个参数接收的实际上就是环境变量表,我们可以通过main函数的第三个参数来获取系统的环境变量。
Linux(环境变量)_第5张图片
Linux(环境变量)_第6张图片

2.通过第三方变量environ获取

Linux(环境变量)_第7张图片
Linux(环境变量)_第8张图片

现在我们来说说main函数的前两个参数,main函数的第二个参数是一个字符指针数组,数组当中的第一个字符指针存储的是可执行程序的位置,其余字符指针存储的是所给的若干选项,最后一个字符指针为空,而main函数的第一个参数代表的就是字符指针数组当中的有效元素个数。

Linux(环境变量)_第9张图片

Linux(环境变量)_第10张图片

你可能感兴趣的:(linux,运维)