环境变量详解及作用
环境变量(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/db
API_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 配置等),可以进一步探讨!