【linux操作系统---->环境变量】

文章目录

  • 一、概念
  • 二、环境变量的分类
    • 1.按级别分
    • 2.按生命周期分
  • 三、常用的环境变量
  • 四、设置环境变量
    • 1.临时环境变量
  • 五、模拟实现系统指令


一、概念

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数
在操作过linux命令行界面时,诸如ls history cd等指令其实都是用C语言写的一个个的可执行程序,当需要运行这些可执行程序的时候只需要输入ls这样的简单字样就可以了,而我们自己写的可执行c程序却需要加上“./”。这就是环境变量导致的。
【linux操作系统---->环境变量】_第1张图片

可以不加“./”就能执行“ls”,是因为有一个叫做PATH的系统环境变量中存储了“ls”可执行文件的路径和“.”点表示的是当前路径,PATH变量是为了方便系统找到文件的路径,是系统特定的执行文件搜索凭据。我们自己写的可执行程序的绝对路径如果添加到这个环境变量中当然也可以目标文件名直接运行了。
当然了PATH只是操作系统维护的环境变量之一,每个环境变量都有其作用。

二、环境变量的分类

1.按级别分

系统环境变量:公共的,对所有用户有效
指令:export,可查看所有系统环境变量
【linux操作系统---->环境变量】_第2张图片
用户环境变量:自定义的个性化设置,只对该用户生效
指令:env,可查看用户所有环境变量
【linux操作系统---->环境变量】_第3张图片

2.按生命周期分

永久环境变量:在环境变量脚本文件中配置的环境变量,每次用户登录都会执。
临时环境变量:使用时在shell中临时定义的环境变量,退出shell后失效

三、常用的环境变量

PTAH:存储可执行程序的搜索目录,可执行程序包括linux系统命令和用户的应用程序
LANG:存储linux系统语言,地区,字符集
HOSTNAME:存储服务器主机名字。
SHELL:用户当前使用的shell解析器
HISTSIZE:保存的历史命令的数目
USER:当前用户名
HOME:当前用户的主目录

四、设置环境变量

1.临时环境变量

指令:export 变量名=变量值
作用:直接修改单条变量
【linux操作系统---->环境变量】_第4张图片
指令:export 变量名=$变量名:路径1:路径2
作用:在原有基础上增加环境变量。
【linux操作系统---->环境变量】_第5张图片
2.用户环境变量
ls /home/*/.bash(查看家目录下的所有以.bash结尾的文件),查看用户脚本文件
【linux操作系统---->环境变量】_第6张图片
.bash_profile:专属用户环境变量配置脚本文件,推荐在这个文件中设置环境变量。
.bash_history:历史指令记录文件
.bash_logout:退出时执行文件
.bashrc:此文件每打开一个shell终端就会执行一次,所以一般不在这个文件中设置环境变量,开销大。
2.系统换将变量
脚本文件:/etc/profile文件中添加变量(不推荐,因为不方便维护)
【linux操作系统---->环境变量】_第7张图片
或者在/etc/profile.d目录中添加脚本文件(以.sh结尾的文件)(推荐,方便维护)
【linux操作系统---->环境变量】_第8张图片

五、模拟实现系统指令

C语言我们从头到尾都没有见过main函数的参数,是不是以为它没有参数呢,其实main函数也是有参数的【linux操作系统---->环境变量】_第9张图片
【linux操作系统---->环境变量】_第10张图片
环境变量其实是一个内存级的量表,每个程序都会收到这个表,例如C语言中,我们写的c程序同样会收到这个表,我们试验一下在main函数中接收环境变量
【linux操作系统---->环境变量】_第11张图片
【linux操作系统---->环境变量】_第12张图片
既然每个程序都会收到这个表,说明它是具有全局性的,那么*envp[]也有一个全局函数,getenv()函数,我们模拟实现一个pwd系统指令
【linux操作系统---->环境变量】_第13张图片
【linux操作系统---->环境变量】_第14张图片
【linux操作系统---->环境变量】_第15张图片
有了前两个参数的用法,我们就可以解释命令带选项参数是真么回事儿了。
实现命令带选型
【linux操作系统---->环境变量】_第16张图片
【linux操作系统---->环境变量】_第17张图片

你可能感兴趣的:(linux)