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 -的时候能来回切换
相关推荐
xian0gang7 分钟前
rk3588 区分两个相同的usb相机
linux
这儿有一堆花17 分钟前
安全访问家中 Linux 服务器的远程方案 —— 专为单用户场景设计
linux·服务器·安全
RussellFans42 分钟前
Linux 文本三剑客(grep, awk, sed)
linux·运维·服务器
猴哥聊项目管理1 小时前
什么是DevOps智能平台的核心功能?
运维·项目管理·制造·devops·软件·项目管理软件·软件分享
Chuncheng's blog1 小时前
CentOS 7如何编译安装升级gcc至7.5版本?
linux·运维·c++·centos
听风吹等浪起1 小时前
CentOS在vmware局域网内搭建DHCP服务器【踩坑记录】
linux·服务器·centos
明月看潮生1 小时前
青少年编程与数学 01-011 系统软件简介 04 Linux操作系统
linux·青少年编程·操作系统·系统软件·编程与数学
aitav01 小时前
⚡️ Linux Docker 基本命令参数详解
linux·运维·docker
Nazi62 小时前
docker数据管理
运维·docker·容器
静水楼台x2 小时前
nginx日志的一点理解
运维·nginx