博主头像
mxd's Blog

把日子当 commit,把崩溃当 feature,在不断的挫折里给现实偷偷打上 nightly 更新!

一篇文章, 带你解决所有的环境变量难题

环境变量是 Unix-like 系统中影响进程行为的动态值,存在于进程运行环境中。它们可以存储如临时文件路径(TEMP)、用户主目录(HOME)等信息。本文面向初学者,详细介绍 macOS、Linux(Debian、Ubuntu、CentOS、Rocky Linux、Alma Linux、Fedora、Arch Linux、Alpine Linux)、FreeBSD 和 OpenBSD 的环境变量配置,涵盖 sh、bash、zsh 等 Shell 的设置方法,变量类型,以及常见变量用途。一篇文章带你搞定所有的环境变量难题,别再东找找西找找了!

环境变量在不同系统中的配置

macOS

macOS 基于 Darwin(BSD 变体),环境变量配置如下:

  • 系统级别

    • /etc/paths:设置系统级 PATH 变量。
    • launchctl setenv:设置系统变量,但需额外配置以持久化。
  • 用户级别

    • ~/.bash_profile:用于 Bash Shell。
    • ~/.zshrc:用于 Zsh Shell(macOS Catalina 及后续版本默认)。
  • 临时设置

    • 终端中运行 export VAR=value,仅当前会话有效。

Linux 发行版

Linux 发行版按家族分类,配置位置略有差异:

Debian 系(Debian、Ubuntu)

  • 系统级别

    • /etc/environment:shell 无关,pam_env 模块使用。
    • /etc/profile:Bourne Shell 及其衍生 Shell 的全局配置。
    • /etc/profile.d/:存放额外 profile 脚本。
  • 用户级别

    • ~/.profile:登录 Shell 配置。
    • ~/.bashrc:非登录 Bash Shell 配置。
    • ~/.bash_profile:登录 Bash Shell 配置。

Red Hat 系(CentOS、Rocky Linux、Alma Linux、Fedora)

  • 系统级别

    • /etc/profile.d/:存放系统级 profile 脚本。
    • /etc/environment:pam_env 模块使用。
  • 用户级别

    • ~/.bash_profile:登录 Shell 配置。
    • ~/.bashrc:非登录 Shell 配置。

Arch Linux 与 Alpine Linux

大多数都是相同的,注意下 Alpine 这玩意儿是用的 BusyBox 必须特殊照顾一下。

  • 系统级别

    • /etc/environment:pam_env 模块使用。
    • /etc/profile:全局 profile 配置。
  • 用户级别

    • ~/.profile:登录 Shell 配置。
    • ~/.bashrc:非登录 Shell 配置(Alpine 使用 BusyBox,可能有细微差异)。

FreeBSD

  • 系统级别

    • /etc/profile:全局 profile 配置。
    • /etc/login.conf:用户登录配置。
  • 用户级别

    • ~/.profile:用户级配置。

OpenBSD

  • 系统级别

    • /etc/profile:全局 profile 配置。
  • 用户级别

    • ~/.profile:用户级配置。

每种 Shell 的特定配置

不同 Shell 的配置文件和设置方法如下:

Bash

  • 配置文件

    • ~/.bashrc:非登录 Shell。
    • ~/.bash_profile:登录 Shell。
    • /etc/bash.bashrc:系统级 Bash 配置。
  • 设置变量

    • 持久化:编辑配置文件,添加 export VAR=value
    • 临时:终端运行 export VAR=value

Zsh

  • 配置文件

    • ~/.zshrc:交互式 Shell。
    • ~/.zprofile:登录 Shell。
    • /etc/zsh/zshrc:系统级 Zsh 配置。
  • 设置变量

    • 与 Bash 类似,使用 export VAR=value

Sh(Bourne Shell)

  • 配置文件

    • ~/.profile:登录 Shell。
  • 设置变量

    • 使用 export VAR=value

环境变量的类型

  • 系统变量:全局生效,影响所有用户,设置在系统级文件。
  • 用户变量:仅影响特定用户,设置在用户主目录配置文件。
  • 全局变量:通常等同于系统变量。
  • 临时变量:仅当前会话有效,关闭终端后失效。
  • 脚本变量:在 Shell 脚本中声明,可为本地或环境变量。

常见环境变量

以下为常见环境变量及其用途:

变量名用途
PATH指定 Shell 搜索可执行文件的目录列表
HOME用户主目录路径
SHELL当前登录 Shell 的路径
USER当前用户名
TERM终端类型
LANG, LC_*语言和区域设置,控制字符编码和语言偏好

脚本中声明和引用变量

在 Shell 脚本中,变量声明和引用方法如下:

  • 本地变量

    MY_VAR="value"
  • 环境变量

    export MY_ENV_VAR="value"
  • 引用变量

    • 使用 $VAR_NAME${VAR_NAME}
    • 示例:echo $PATH

参考资料

一篇文章, 带你解决所有的环境变量难题
https://blog.mxdyeah.top/mxdyeah_blog_post/environment_config.html
本文作者 mxdyeah
发布时间 2025-08-07
许可协议 CC BY-NC-SA 4.0
发表新评论

以下是Google广告,请注意辨别其内容: