【Linux】关于环境变量——你需要知道这些原理&指令

本文介绍了Linux环境变量的基本概念,如本地变量与环境变量的区别,以及PATH、HOME和SHELL等常见环境变量的作用。详细讲解了环境变量的组织方式(如环境表和main函数的第三个参数),并提供了环境变量操作指令,包括echo、export、env和unset等。重点强调了export指令对环境变量的影响及其内存持久性问题。
摘要由CSDN通过智能技术生成

前言

大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向接触过C++ Linux的老铁
主要内容含:
在这里插入图片描述

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

一.环境变量基本概念(博主简练概括)

  • 系统中会存在大量的环境变量,每一个变量都有它的 特殊用途 ,用来完成 特定的系统功能
  • 环境变量被所有子进程继承,通常可以被其下的 所有进程读到 ,所以称 “系统环境变量通常具有全局属性”

【本地变量vs环境变量】

  • 本地变量只在bash进程内部有效,不会被子进程继承下去
  • 环境变量通过让所有的子进程继承的方式,实现自身的全局性!

【Linux命令分类&内键命令可读本地变量】

  1. 常规命令:shell fork出的子进程执行的
  2. 内键命令:shell命令行的一个函数,可以直接读取shell内部定义的本地变量
  • 举例:我们清空PATH环境变量,echo却仍然能跑
  • 原因:echo是内键命令
    在这里插入图片描述

二.常见环境变量介绍

  • PATH : 指定命令的搜索路径
  • HOME : 指定用户的主工作目录 (即用户登陆到Linux系统中时,默认的目录)
  • SHELL : 当前Shell ,它的值通常是/bin/bash。

三.环境变量的组织方式:环境表(main函数的第三个参数)

  • 我们登录系统时,系统会为shell创建一张 环境变量表
    在这里插入图片描述
  • main函数其实有第三个参数char* env[],即 环境变量表的指针数组
  • 我们用自动化构建工具makefile构建如下所示程序
  • 执行程序,打印出结果,正是所有的环境变量(与env指令打印出来的一致)
int main(int argc, char* argv[], char* env[])
{
	int i = 0;
	for (; env[i]; i++)
	{
		printf("env[&d]: %s\n", i, env[i]); 
	}
}

四.环境变量相关的【基本操作指令】(以PATH举例)

1.指令总览

  1. echo $NAME //NAME:你的环境变量名称 : 显示某个环境变量值
  2. export : 设置一个新的环境变量
  3. env : 显示所有环境变量
  4. unset : 清除环境变量
  5. set : 显示本地定义的shell变量和环境变量

2.env:获取环境变量

  • env :直接查看环境变量
env

在这里插入图片描述

3.environ(全局指针):获取环境变量

  • environ是一个二级指针
  • libc中定义的全局变量environ指向环境变量表
  • environ没有包含在任何头文件中,所以在使用时要用 extern声明
    在这里插入图片描述
int main(int argc, char* argv[])
{
	extern char** environ; 
	int i = 0; 
	for (; environ[i]; i++)
	{
		printf("%s \n", environ[i]);
	}
	return 0;
}

4.echo $PATH

  • echo PATH :直接打印环境变量PATH名字
  • echo $PATH :打印PATH的位置
echo PATH
echo $PATH

在这里插入图片描述

5.PATH=xxxxxxxxx (覆盖) / PATH= $PATH:xxxxxxxxx(追加) (操作对象:指定环境变量)

  • 如下图所示,用‘ ’ 覆盖了原来的PATH,echo的结果是空
    在这里插入图片描述
  • 注意事项:覆盖修改的只是 内存中的环境变量 ,重新登录xshell它会自动恢复 (每一次重新登陆,都会给我们形成新的bash解释器并且新的bash解释器会从配置文件自动读取新城自己的环境变量表信息)

6.export(导出到环境变量表中)(重点)

  • 具体实验在四章节
  • export : 直接改变bash/shell环境变量本身 , 添加到当前进程上下文的环境变量表中 ,重新登录xshell会恢复
  • 注意事项:修改的只是 内存中的环境变量 ,重新登录xshell它会自动恢复 (每一次重新登陆,都会给我们形成新的bash解释器并且新的bash解释器会从配置文件自动读取新城自己的环境变量表信息)
export xx=12345
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YY的秘密代码小屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值