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就打开一个终端了,多重复几次,每次打开的都是一个单独的终端,在终端内定义的变量,只要你没有专门操作当前终端变量和系统变量的命令行,那么该终端所有的变量,都将在你关闭时自动销毁)
最常用的变量类型有三种:
- 局部变量:当前终端自己的私有变量,【作用域】只在当前终端中有效;
- 环境变量:终端打开时,系统默认带过来的变量,【作用域】影响全局或当前用户;
- 导出的环境变量(全局变量):用户通过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文件即可。