1,Linux环境变量基本定义(基于Ubuntu示例进行讲解)

ops/2025/1/16 4:01:18/

linux%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E6%A6%82%E5%BF%B5">linux环境变量的概念

Linux环境变量(准确说应该是shell变量),是直接存储在操作系统中的一组键值对(dict类型),用于配置系统和应用程序的操作行为。

【有经验的描述】:它们的工作原理很简单,就比如说你本地运行一个python项目,是不是可以在app.run()方法运行之前就预加载一系列变量,该项目运行期间,这些变量在任何地方都能够调用,每一个函数中都能够获取这些变量,函数中根据自己需要将不同操作行为对应到变量的不同值上(看具体情况了)。

【描述】同理,Linux环境变量就是在系统启动时由操作系统设置【系统变量】,或者在运行程序程序时由用户或程序本身设置【环境变量,作用域只在当前程序内生效】。

环境变量对于控制程序执行、访问系统资源、配置程序设置等非常重要。

环境变量基础操作

  • 如下bash语句创建demo_temp变量(!bash shell是一种命令行解释器嗷, 以下简称shell)
declare demo_temp
  • 如下给变量赋值(shell中的赋值操作,等号左右两边不能有空格,属语法规范)
demo_temp=qianjuanmingyun
  • 读取变量的值,固定格式:echo $变量名

echo $demo_temp

环境变量的定义域

在每一个shell终端中,该终端内创建的变量只作用于当前终端内。

(终端:举个简单的例子,你在常用的Windows系统上,同时按住win加R,在弹出的弹窗中输入cmd就打开一个终端了,多重复几次,每次打开的都是一个单独的终端,在终端内定义的变量,只要你没有专门操作当前终端变量和系统变量的命令行,那么该终端所有的变量,都将在你关闭时自动销毁)

最常用的变量类型有三种:

  1. 局部变量:当前终端自己的私有变量,【作用域】只在当前终端中有效;
  2. 环境变量:终端打开时,系统默认带过来的变量,【作用域】影响全局或当前用户;
  3. 导出的环境变量(全局变量):用户通过export从普通变量导出的环境变量,【作用域】变量在当前shell和子进程中有效。

查看三种变量类型的命令行:


# 查询全部变量,包括:
# - 局部变量(仅在当前会话生效)
# - 环境变量(导出的变量,当前终端及子终端生效)
# - Shell 函数(当前会话中定义的函数)
set | sort > set.txt  # 排序保存
set > set.txt         # 原始顺序保存# 查询当前会话的环境变量(只在当前终端生效的环境变量)
env | sort > env.txt  # 排序保存
env > env.txt         # 原始顺序保存# 查询所有导出的环境变量(在当前终端及其子终端中生效)
export | sort > export.txt  # 排序保存
export > export.txt         # 原始顺序保存

不同变量的创建方式:

# 创建普通变量(非环境变量)
temp=qianjuanmingyun# 查看普通变量
echo $temp# 检查是否在环境变量中(返回为空)
env | grep temp# 导出为环境变量
export temp# 检查是否在环境变量中(返回对应的值)
env | grep temp

变量的生存周期(永久环境变量、临时环境变量)

  • 临时环境变量:通过export命令行声明即可,该变量在当前shell终端关闭时失效;
  • 永久环境变量:通过修改系统配置文件实现,该变量将永久生效。

如需设置永久环境变量,通过修改/home/用户下的.profile文件即可。


http://www.ppmy.cn/ops/150457.html

相关文章

STM32F1学习——DMA直接存储器存取

一、DMA直接存储器存取 DMA的全称是 Direct Memory Access 直接存储器存取,他可以提供外设和存储器间或存储器和存储器间的高速数据传输,无需CPU的干预。 STM32有12个DMA通道,由DMA1(7个通道组成)和DMA2(5个通道组成),STM32F103C8…

开源AI微调指南:入门级简单训练,初探AI之路

112,如何让 113? 简单的微调你的 AI, 微调前的效果,怎么调教它都是 112. 要对其进行微调(比如训练113),可以按以下步骤进行。 确保你已经安装了以下工具和库: ollamallama3.2Pyt…

基于WebRTC实现音视频通话

客户端采用 WebRTC 技术(推流),通讯用 websocket。 WebRTC 像是一个面试过程: 第一步:发起方(拨打电话者)点击拨打电话时,获取本地媒体流并推流给接收方同时捕获接收方推过来的流&a…

计算机网络之---SSL/TLS协议

SSL/TLS协议 **SSL(Secure Sockets Layer)和TLS(Transport Layer Security)**是加密协议,用于确保通过不安全的网络(如互联网)传输的数据的安全性和隐私。它们通过提供数据加密、身份验证和数据…

jsx语法中el-table-v2中cellRender如何使用动态绑定

答案::attribute"xx"改为attribute{xx} 改写: const columns ref([{ key: index, dataKey: index, title: t(setting.index), width: 100 },{ key: no, dataKey: no, title: t(setting.key), width: 100 },{ key: name, dataKey: name, tit…

【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列

系列文章目录 🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀 文章目录 系列文章目录前言 🍃一、实体对象更新1.1 单条与批量1.2 不更新某列1.3 只更新某列1.4 NULL列不更新1.5 无主键/指定列…

机器学习 - 如何选择函数集合?

一、关于机器学习的基本过程 对一个预测任务,输入特征向量为 𝒙,输出标签为 𝑦,我们选择一个函数集合 F,通过学习算法 𝒜 和一组训练样本 𝒟,从 F 中学习到函数 &#x…

C#中 string.Equals 和 == 区别

在 C# 中,string.Equals方法和运算符都可用于比较字符串,但它们在某些方面存在区别,主要如下: **string.Equals方法:**是一个实例方法,用于比较两个字符串对象的内容是否相等,比较时会根据字符…