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 -的时候能来回切换
相关推荐
Lalolander6 分钟前
设备制造行业如何避免项目管理混乱?
运维·制造·工程项目管理·四算一控·epc·环保设备工程·设备制造
LucianaiB24 分钟前
【金仓数据库征文】_AI 赋能数据库运维:金仓KES的智能化未来
运维·数据库·人工智能·金仓数据库 2025 征文·数据库平替用金仓
prinrf('千寻)39 分钟前
nacos设置权重进行负载均衡不生效
运维·负载均衡
Lary_Rock1 小时前
Android 编译问题 prebuilts/clang/host/linux-x86
android·linux·运维
熬夜学编程的小王1 小时前
【Linux篇】理解信号:如何通过信号让程序听从操作系统的指令
linux·信号产生·软件条件产生信号
子非衣1 小时前
Windows云主机远程连接提示“出现了内部错误”
服务器·windows
绵绵细雨中的乡音1 小时前
Linux进程学习【基本认知】
linux·运维·学习
Johny_Zhao1 小时前
MySQL 高可用集群搭建部署
linux·人工智能·mysql·信息安全·云计算·shell·yum源·系统运维·itsm
lLinkl2 小时前
项目笔记2:post请求是什么,还有什么请求
服务器·网络协议·http
珹洺2 小时前
Linux操作系统从入门到实战(三)Linux基础指令(上)
linux·运维·服务器