
文章目录
- 1环境变量的基本概念
- 2.命令行参数
- 3.环境变量是什么
- 4.环境变量查询与更改
-
- [4.1 查询](#4.1 查询)
-
- 1`env`命令
- [2.`echo (name)\`](#2.`echo (name)`)
- 3.`mian`函数的第三个参数(代码方式)
- 4.`getenv`(系统调用)
- 5.`environ`获取全部(代码方式)
- 4.2更改
- 5.认识一些环境变量
1环境变量的基本概念
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性
2.命令行参数
我们平时在写main
函数的时候不会向其中去传入参数,但是main函数其实是可以带参数的:

运行时我们将我们自己的命令后带上如-a
这种选项就会发现:

我们的命令传入到程序中会被解析成这样

这样我们的就可以将输入的命令解析并管理起来,这个工作是由我们程序的父进程bash来完成的
并且通过上面的代码我们就可以设置一个简单的命令选项判断的功能


3.环境变量是什么
我们在运行系统提供的命令的时候无需指定地址,
而运行我们自己的程序的时候就需要将程序的位置指出来
区别就是我们程序路径不在环境变量中,而系统的命令能直接执行是因为在环境变量中记录了该程序的路径,
如果我们将我们的程序也放到/usr/bin
目录下我们的程序也不用带路径就能直接执行
4.环境变量查询与更改
4.1 查询
1env
命令
我们可以使用env
命令查询所有的环境变量

2.echo $(name)
使用echo $(name)
查询单个环境变量

3.mian
函数的第三个参数(代码方式)
我们的mian函数还有第三个参数env[]
数组,
bash会将环境变量表借助于这个表传入我们的程序
我们可以写个程序来观察一下:


4.getenv
(系统调用)
头文件<stdlib.h>

写段代码测试一下:


5.environ
获取全部(代码方式)
头文件:unsitd.h
使用方法如下:


4.2更改
1.直接进行更改(bash重启后恢复)

我们会发现更改后我们自己的命令不用带路径了
但是当我们运行系统命令的时候也就找不到了

原因是因为我们将环境直接替换成了我们的,不是新增
新增的方法:

重启bash能够恢复,说明我们的环境变量表存在于我们的bash中
2.修改配置文件
通过修改家目录下的.bahsrc
和.bash_profile
就可以在重启bash的时候不进行环境变量的重置

3.使用export/unset
来新增/删除环境变量

有个问题:exprot
是bash的子进程,那么是怎么将环境变量交给父进程的呢?
原因是: exprot
是一个内键命令,这个命令是由父进程直接执行的,并不由子进程执行
5.认识一些环境变量
HOME
记录家目录

SHELL
当前使用的Shell程序路径USER
记录当前用户

HISTSIZE
记录HISTSIZE条历史命令

PWD/OLDPWD
记录当前的地址和老的地址,为了我们执行cd -
的时候能来回切换
