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 -的时候能来回切换
相关推荐
什么半岛铁盒4 分钟前
Linux信号的保存
linux·运维·网络
百锦再12 分钟前
大数据技术的主要方向及其应用详解
大数据·linux·网络·python·django·pygame
2301_8035545226 分钟前
vim,gcc/g++,makefile,cmake
linux·编辑器·vim
noravinsc32 分钟前
国产化中间件 替换 nginx
运维·nginx·中间件
惜.己1 小时前
Linux常用命令(十四)
linux·运维·服务器
linkingvision2 小时前
H5S 视频监控AWS S3 对象存储
linux·运维·aws·视频监控s3对象存储
doupoa2 小时前
Fabric 服务端插件开发简述与聊天事件监听转发
运维·python·fabric
BillKu2 小时前
服务器多JAR程序运行与管理指南
运维·服务器·jar
QQ2740287562 小时前
BlockMesh Ai项目 监控节点部署教程
运维·服务器·web3
belldeep2 小时前
WSL 安装 Debian 12 后,Linux 如何安装 vim ?
linux·debian·vim