系统环境变量

1.概念

**官方概念:**环境变量(environment variables)⼀般是指在操作系统中⽤来指定操作系统运⾏环境的⼀些参数

理解:环境变量其实就是系统内的一个全局变量,通常具有某些特殊⽤途,在系统当中通常具有全局特性

比如PATH环境变量可以让我们在命令行输入命令时,bash能够在PATH对应的路径下找到对应的程序,

HOME环境变量可以让我们在输入cd ~命令时得以找到家目录并跳转,

LOGNAME记录登陆者的用户名

再比如如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪⾥,但是照样可以链接成功,⽣成可执⾏程序,原因就是有相关环境变量帮助编译器进⾏查找。

2.命令行参数

在理解环境变量前,我们还需要知晓一个知识点:命令行参数

main函数有参数吗?

有,只是我们在以前的学习中一般不会使用,

在以前我们认为程序最开始的入口就是main函数,实际上程序的入口在linux下是从一个start函数开始的,这与我们main函数参数有什么关系呢?程序运行起来,会先判断main函数中是否接收参数,接收2个还是3个参数,如果main函数没有接收参数,则在执行main函数前不会传参给main函数,如果有两个参数,则会传argc和argv[],如果有三个接收参数,则会传argc,argv[],env[]

3.环境变量(一个例子理解)

我们通过PATH这个环境变量来深入理解环境变量

要执行一个程序,必须先要找到它!

谁找?

bash

如何找到它?

靠环境变量PATH找,PATH是bash找指令的默认搜索路径!

那么PATH的默认路径是什么呢?

可以看到默认路径不止一个,每个路径之间用:分隔,从上图我们也可以看到环境变量 = 名称 + 内容

环境变量从存储角度就是每次bash启动时把.bashrc和.bash_profile配置文件中的数据读取并生成的一个char* env[]的数组,也就是一张表,数组中每个环境变量的内容都是一个字符串

4.认识更多环境变量

5.获取环境变量的方法

(1)命令

a. echo: 显⽰某个环境变量值 | echo $PATH

b. export: 设置⼀个新的环境变量 | export NAME=1111

c. env: 显⽰所有环境变量 | env

d. unset: 清除环境变量 | unset NAME

e. set: 显⽰本地定义的shell变量和环境变量 | set

(2)代码

a.命令行第三个参数 char* env[]

b.通过第三⽅变量environ获取

c.getenv函数

putenv可以设置环境变量,这个以后讲解

6.补充概念

(1)本地变量:

不会被子进程继承,只在bash内部被使用!(原因之一:shell脚本需要定义变量)

2.export创建环境变量的问题

我们以前说过所有操作都是进程,那么export是一个子进程,但是却能往父进程bash的环境变量的文件中写入,这是如何做到的?

因为export是一个内建命令,不需要创建子进程,而是让bash亲自执行,bash自己通过调用函数或者系统接口完成!

相关推荐
FlyWIHTSKY5 分钟前
Vue 3 onMounted 中控制同步与异步执行策略
前端·javascript·vue.js
蜗牛攻城狮9 分钟前
【Vue3实战】El-Table实现“超过3行省略,悬停显示全文”的完美方案(附性能优化)
前端·vue.js·性能优化·element-plus
孙12~9 分钟前
前端vue3+vite,后端SpringBoot+MySQL
前端·html·学习方法
隔壁小邓11 分钟前
vue的组件化的理解之单独拆分的组件&组件的封装
前端·javascript·vue.js
困惑阿三13 分钟前
全栈部署排雷手册:从 405 报错到飞书推送成功
服务器·前端·后端·nginx·阿里云·node.js·飞书
无名-CODING14 分钟前
从零开始!Vue3+SpringBoot前后端分离项目Docker部署实战(下):Vue前端Nginx反代与致命坑点盘点
前端·spring boot·docker
我命由我1234514 分钟前
Element Plus 问题:选择框表单校验没有触发
开发语言·前端·javascript·html·ecmascript·html5·js
optimistic_chen23 分钟前
【Vue3入门】vue-router 路由管理
前端·javascript·vue.js·路由·router
柯儿的天空39 分钟前
WebGPU全面解析:新一代Web图形与计算API
前端·chrome·microsoft·前端框架·chrome devtools·view design
捕捉一只前端小白41 分钟前
cpolar内网穿透以及微信小程序域名设置
前端·vue.js·微信小程序·小程序