Linux环境变量

文章目录

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.认识一些环境变量

  1. HOME记录家目录
  1. SHELL当前使用的Shell程序路径
  2. USER记录当前用户
  1. HISTSIZE记录HISTSIZE条历史命令
  1. PWD/OLDPWD记录当前的地址和老的地址,为了我们执行cd -的时候能来回切换
相关推荐
兵bing1 小时前
Docker Compose 配置文件归纳总结-千问
运维·docker·容器
dok121 小时前
Johannes 《Linux内核模块与设备驱动开发:编写Linux驱动程序》 (11)kmalloc 动态内存分配和struct file中的私有数据
linux·驱动开发·算法
IT小盘1 小时前
17-构建Prompt测试集-提示词优化不再凭感觉
服务器·windows·prompt
INNOVIX稳石机器人1 小时前
从“存得下”到“管得活”:稳石四向穿梭车如何重塑密集仓储新逻辑?
大数据·运维
无足鸟ICT2 小时前
【RHCA+】if判断
linux
大魔王爱学习2 小时前
终端bash&zsh中实现基于前缀的历史命令搜索
linux·bash
2401_858286112 小时前
OS81.【Linux】基于环形队列的多生产者-多消费者模型
linux·运维·服务器·环形队列
U-Mail邮件系统2 小时前
企业邮箱搭建用自建还是租用?合规、成本与安全性对比解析
服务器·网络·企业邮箱系统
X1A0RAN2 小时前
Jenkins Pipeline 变量打印指南
运维·servlet·jenkins
吴爃2 小时前
小微企业 SRE 稳定性建设(二):上线前 P0 验收项目
运维·可用性测试·稳定性·故障