环境变量详解及作用
环境变量(Environment Variables)是操作系统或程序运行时使用的动态键值对(Key-Value),用于存储系统配置、路径信息、用户偏好等数据。它们可以被操作系统、Shell 脚本、应用程序访问,影响程序的运行方式。
1. 环境变量的作用
环境变量的主要用途包括:
(1) 配置系统行为
- 定义临时或持久的系统设置(如语言、时区、默认编辑器等)。
- 示例:
-
LANG=en_US.UTF-8(设置系统语言) -
TZ=Asia/Shanghai(设置时区)
-
(2) 存储文件路径
- 让程序知道关键文件或工具的存放位置(如 Python、Java、Node.js 的安装路径)。
- 示例:
-
PATH(存储可执行程序的搜索路径) -
JAVA_HOME(指定 JDK 安装路径) -
PYTHONPATH(Python 模块搜索路径)
-
(3) 控制程序运行方式
- 某些程序依赖环境变量调整行为(如调试模式、日志级别)。
- 示例:
-
DEBUG=True(开启调试模式) -
FLASK_ENV=development(Flask 框架开发模式)
-
(4) 安全存储敏感信息
- 避免在代码中硬编码密码、API 密钥等(如数据库连接信息)。
- 示例:
DATABASE_URL=postgres://user:pass@localhost:5432/dbAPI_KEY=12345abcde
2. 常见环境变量示例
| 变量名 | 作用 |
|---|---|
PATH |
系统查找可执行文件的目录列表 |
HOME / USERPROFILE
|
用户主目录(Linux/macOS: /home/user,Windows: C:\Users\user) |
PWD |
当前工作目录 |
SHELL |
默认 Shell 程序(如 /bin/bash) |
EDITOR |
默认文本编辑器(如 nano、vim、code) |
HTTP_PROXY / HTTPS_PROXY
|
网络代理设置 |
PYTHONPATH |
Python 额外模块搜索路径 |
CONDA_PREFIX |
当前 Conda 环境的路径 |
3. 如何查看和设置环境变量?
(1) 查看所有环境变量
- Windows(CMD/PowerShell):
set # 查看所有变量
echo %PATH% # 查看 PATH
- Linux/macOS(Bash/Zsh):
env # 查看所有变量
echo $PATH # 查看 PATH
printenv PYTHONPATH # 查看特定变量
(2) 临时设置环境变量
- Windows(CMD):
set VAR_NAME=value
- Linux/macOS(Bash):
export VAR_NAME=value
(3) 永久设置环境变量
-
Windows:
- 通过 系统属性 → 高级 → 环境变量 修改。
- 或在 PowerShell 中:
[Environment]::SetEnvironmentVariable("VAR_NAME", "value", "User") -
Linux/macOS:
- 修改
~/.bashrc、~/.zshrc或~/.profile:
echo 'export VAR_NAME="value"' >> ~/.bashrc source ~/.bashrc # 重新加载配置 - 修改
4. 环境变量在编程中的应用
Python 示例
import os
# 获取环境变量
python_path = os.getenv("PYTHONPATH")
print(f"PYTHONPATH: {python_path}")
# 设置临时环境变量(仅在当前进程有效)
os.environ["MY_VAR"] = "hello"
print(os.getenv("MY_VAR")) # 输出 "hello"
Node.js 示例
// 获取环境变量
const apiKey = process.env.API_KEY;
console.log(`API Key: ${apiKey}`);
// 运行程序时传入变量(Linux/macOS)
// API_KEY=123 node app.js
5. 为什么环境变量重要?
- 跨平台兼容性:不同系统(Windows/Linux/macOS)可以统一配置。
- 安全性:避免敏感信息(如密码)直接写在代码里。
- 灵活性:不同环境(开发/测试/生产)可以轻松切换配置。
- 可维护性:修改配置无需重新编译代码。
总结
- 环境变量是操作系统和程序运行时使用的动态配置。
- 主要用途:存储路径、控制程序行为、管理敏感数据。
-
查看/设置方法:
set(Windows)、export(Linux/macOS)、os.environ(Python)。 - 最佳实践:用环境变量管理配置,而不是硬编码在代码中。
如果你有更具体的应用场景(如 Python 开发、Docker 配置等),可以进一步探讨!
Top comments (0)