【计算机常识】--环境变量
在 Linux/Unix 系统中,环境变量(Environment Variables)是操作系统或用户设置的全局参数,用于存储系统或程序的配置信息。其中,PATH 是最重要的环境变量之一,它决定了系统在哪些目录中查找可执行程序(命令)。
目录
1.环境变量--定义
2.环境变量--查看
3.环境变量--path变量
4.环境变量--原理
5. 环境变量--新建
1.环境变量--定义
-
环境变量是操作系统或程序运行环境中设置的变量,用于存储系统或程序运行所需的配置信息,如路径、语言设置、临时文件位置等
。它们以键值对(名称-值)的形式存在,例如:- Windows/DOS中的
PATH
:指定可执行文件的搜索路径 - Linux中的
HOME
:定义用户主目录路径
- Windows/DOS中的
-
核心作用
- 路径管理:如
PATH
变量帮助系统查找可执行文件 - 程序配置:如
JAVA_HOME
指定JDK安装路径 - 跨平台适配:通过变量(如
TEMP
)适应不同系统的目录结构
- 路径管理:如
2.环境变量--查看
ls Env:
系统查看:
3.环境变量--path变量
特性 | 用户变量 | 系统变量 |
---|---|---|
作用范围 | 仅当前用户 | 所有用户 |
优先级 | 高(覆盖同名系统变量) | 低 |
修改权限 | 普通用户可修改 | 需管理员权限 |
典型示例 | USERPROFILE , 自定义工具路径 | PATH , SystemRoot |
PATH处理 | 优先搜索 | 合并后次优搜索 |
环境变量!=PATH变量,PATH变量只是环境变量的一部分.
PATH 是一个特殊的环境变量,在操作系统中起着重要的作用,尤其是在命令行中。它指定了操作系统在哪些目录中搜索可执行文件。在 Windows、Linux 和 macOS 等操作系统中,PATH 都有类似的概念。
具体来说,PATH 变量包含一系列目录路径,这些路径用分号(在 Windows 中)或冒号(在 Linux 和 macOS 中)分隔。当你在命令行中输入一个命令时,操作系统会在 PATH 中的这些目录中搜索可执行文件,并在找到匹配的文件时执行它。
这也就是为什么cmd操作可以直接定位到有些命令的原因。
原本需要输入
start "E:\Program Files\Tencent\QQLive\QQLive.exe"
加入环境变量path:
直接输入名称:
4.环境变量--原理
PATH这一环境变量的本质就是添加一个文件夹路径,在cmd中可以直接书写对应文件名,系统搜寻PATH下记录的文件夹中是否有该文件,并打开,这样就不用写绝对路径了。
- 用户变量中的
PATH
优先级: 如果在用户变量和系统变量中都定义了PATH
,系统将使用用户变量中的PATH
。用户变量的优先级更高。- 系统变量中的
PATH
优先级: 如果用户变量中没有定义PATH
,系统将使用系统变量中的PATH
。
5. 环境变量--新建
- 目的: 新建环境变量通常是为了存储特定的配置信息,而不一定是用于寻找可执行文件。
- 效果: 新建的环境变量存储的是一个值,而不是一个路径列表。这个值可以是任何你需要在系统或应用程序中使用的配置信息,不仅限于可执行文件的路径。
新建环境变量和PATH变量的区别:
- 定义:
- PATH变量是一种特殊的环境变量,它指定了操作系统在哪些目录中搜索可执行文件。
- 新建环境变量通常是为了存储特定的配置信息,而不一定是用于寻找可执行文件。
有存储一个
12
的,也有存储路径的
再比如,阿里云的密钥就要求存储在环境变量中,再通过代码调用
特性 | 用户变量 | 系统变量 |
---|---|---|
作用范围 | 仅对当前登录用户生效 | 对所有用户生效(全局) |
优先级 | 高于同名系统变量(冲突时覆盖) | 低于同名用户变量 |
修改权限 | 普通用户可直接修改 | 需管理员权限 |
存储位置 | 注册表 HKEY_CURRENT_USER\Environment | 注册表 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment |
典型用途 | 用户个性化配置(如自定义Python路径) | 全局配置(如系统PATH 、JAVA_HOME ) |
PATH变量处理 | 路径优先被搜索 | 路径次优搜索(与用户PATH合并) |
系统变量设置完成后要重启电脑才生效,用户变量是可以马上生效。如果你编程下载了一个新软件最好要重启电脑,否则排查半天发现是系统变量上的小问题(没错就是我下载cuda没重启debug了半天😭😭😭)
环境变量重点是在变量上,类似于Java中变量,他是全局变量,方便使用。假如一些路径或者配置信息记不住就可以使用变量来存储,直接调用变量就可。(有点类似于Java中的properties 配置文件)