Have a Question?

如果您有任务问题都可以在下方输入,以寻找您想要的最佳答案

环境变量怎么设置

环境变量怎么设置

题图来自Unsplash,基于CC0协议

导读

  • Windows 如何设置环境变量 PATH
  • Linux 设置环境变量的方法 export 和永久配置
  • macOS 设置环境变量的 bash 和 zsh 配置
  • 系统环境变量和用户环境变量的区别
  • 如何在编程语言中设置环境变量(Python, Java)
  • 环境变量就像是操作系统的对话变量,为程序运行和系统功能提供关键信息,比如程序的安装路径、临时文件存放位置等。正确设置它们对于开发、软件运行乃至系统管理都至关重要,尤其是在多用户或多程序的场景下。下面我们将分别针对不同操作系统、Shell类型以及编程语言,介绍如何设置环境变量。

    一、操作系统级环境变量设置

    运行在操作系统本身级别的环境变量,决定了系统软件默认的搜索路径、用户凭据、系统范围内的配置选项等。

    1. Windows 如何设置环境变量 PATH Windows 使用图形界面和编辑注册表两种方式来设置环境变量,特别是全局(适用于所有用户)或每个用户。

      • 图形界面:
        • 在桌面上右击“此电脑”或“我的电脑”,选择“属性”。
        • 点击“高级系统设置”。
        • 在“系统属性”窗口的“高级”选项卡下,点击“环境变量”按钮。
        • 在“系统变量”或“用户变量”区域(根据你需要修改的范围选择)找到“Path”变量。
        • 点击“编辑”或“新建”来添加或修改路径。新建通常用于将单个文件夹加入PATH,而编辑允许你修改已存在的列表。完成后点击“确定”完成层级设置。
        • 需要注意,修改完环境变量后,所有的新命令行窗口(CMD 或 PowerShell)都会继承新的设置。若已打开窗口,可以使用 refreshenv (PowerShell) 或 gpresult /z (较新版本 Windows)等命令强制刷新。
        • 注意:直接编辑注册表(如 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironmentHKEY_CURRENT_USEREnvironment 下的 Path 键值)是一种更底层的方式,但风险也更高,建议优先使用图形界面。
    2. Linux 设置环境变量的方法 export 和永久配置

      Linux 系统主要通过 Shell(如 bash、sh)来管理和应用环境变量。最常见的设置方式是 export 命令和编辑配置文件实现永久化设置。

      • 临时设置 (export 命令): 在任何一个 Shell 会话中,你可以直接使用命令行设置环境变量。 格式:export 变量名=值 (斜杠前可以有空格,也可以使用引号,例如 export PATH="$PATH:/新的目录"export PATH=$PATH:/新的目录) 这种设置只在当前打开的 Shell 会话以及其子进程中有效。一旦关闭终端窗口,设置就会丢失。
      • 永久配置: 为了让环境变量在每次启动 Shell 时都可用,需要将 export 命令写入特定的配置文件中。
        • bash Shell
          • 全局设置(适用于所有用户登录后):编辑 /etc/environment 文件或 /etc/profile 文件。
          • 用户级别设置(仅当前用户):编辑用户主目录下的 ~/.bash_profile~/.bashrc 文件。
          • 通常 ~/.bash_profile 会被运行,它通常会加载 ~/.bashrc
          • 在配置文件末尾添加一行 export 变量名=值 即可。
          • 注意区别PATH 这样的常用变量通常放在 ~/.bashrc 中,这样每次打开一个新的终端(图形界面模拟终端除外,图形界面通常会用 X resources 或 specific 启动参数加载 ~/.bashrc)都会加载;而像 NODE_ENV 这样的特定程序变量则可放在 ~/.bash_profile 中。
        • 其他 Shell:如 cshtcsh 使用 setenv VAR value,配置文件为 ~/.cshrc/etc/csh.cshrcfish shell则使用 set -gx 变量名 值 并配置于 ~/.config/fish/config.fish。这里主要介绍 bash。
      • 验证设置:可在终端使用 echo $变量名printenv 变量名 查看变量值。echo $PATH 是 bash 中常用的方式。
    3. macOS 设置环境变量的 bash 和 zsh 配置

      macOS 默认从 Catalina(10.15)开始,大多数新安装的软件推荐使用 Z shell (zsh) 作为默认 shell。官方引导程序 asdfnvm 等会自动将环境变量配置文件修改集群在用户家目录下的 ~/.zshrc 文件中。 对于习惯 ~/.bash_profile 的用户,system-resolver launchctl、解决默认shell变化问题和历史遗留。

      • 默认 Shell (zsh):zsh 解析 ~/.zshenv (每次 zsh 启动时)、(~/.zshrc) (交互式 shell 启动时)、~/.zprofile (非交互式的第一个 shell,类似bash的 .bash_profile)。通常修改 ~/.zshrc 文件中的 export 命令即可达到目的。修改后需要手动通过 source ~/.zshrc 使更改生效,或重新打开终端。
      • 旧式 Bash 用户(如果设置了 legacy shell): 他们还是在使用 ~/.bash_profile~/.bashrc~/.bash_logout。检查 shell 类型可以通过 echo $SHELL 指令得知。macOS 也维护着系统级的配置文件 /etc/zshrc/etc/bashrc,但影响范围和编辑权限需要根据系统限制进行。

    二、用户级别(系统变量 vs 用户变量)

    系统环境变量和用户环境变量的区别主要体现在它们作用域的范围上:

    • 系统环境变量:比如 Windows 的系统级 PATH、Linux/macOS 的全局配置。它们作用于系统内的所有用户和进程,通常修改需要管理员权限。这些变量帮助系统性地定义会影响所有用户的哪些目录、服务或配置。
    • 用户环境变量:分别存储在每个用户的主目录下(如 Windows 的用户环境变量设置,或 Linux/macOS 中特定用户配置文件中定义的变量)。它们只在当前登录的用户及其进程下生效。这允许每个用户根据自己的需求(如特定的开发工具路径)定制自己的环境。

    三、编程语言中的环境变量访问

    程序通常不会直接“设置”操作系统级别的环境变量,而是根据系统当前存在的环境继承来运行。但开发和调试过程中,我们常常需要在逻辑层面访问这些变量,或者在打包应用时为特定环境提供配置。

    1. 当程序启动一个进程时,它会继承父进程的环境变量设置。
    2. 开发者工具如 Python 的虚拟环境(通过 venvconda activate)在激活时,会修改当前 shell 的环境,从而改变 PATH 和其他变量,让正确版本的 Python 解释器和包被调用。
    3. 在代码中获取环境变量值
      • Python (最常用方式是 os.getenv 函数)os.getenv("VAR_NAME", "默认值") 用于获取变量 VAR_NAME 的值,可以通过一个参数设置找不到时的默认值。避免使用 os.environ.get 如果值可能没有定义,os.environ 只返回已定义的变量。你可以在代码内读取环境变量,甚至在其开始时为其设置新值(但这很少做,因为这改变了实际发生的环境),以便检查依赖项或进行配置。
      • Java:可以通过 System.getenv() 方法获取所有环境变量,或者使用 System.getenv("VAR_NAME") 获取指定变量的值。也可以在代码中的 MANIFEST.MF 文件里使用 Class-Path 动态引入依赖环境,这是部署 Java 应用时常用的方式。 JAVA_OPTS 常用于启动脚本设置 Java 虚拟机参数。

    总之,环境变量是一个重要的配置工具。无论是操作系统的全局变量、多用户的用户变量,还是程序运行时的临时访问,它们都扮演着连接系统与应用程序的关键角色。学会正确理解、配置和调试环境变量能够帮助我们有效解决许多开发和系统管理中的问题。在设置或修改环境变量前,最好先备份好当前配置,尤其是在更改了系统级别路径这种最后要重启电脑的应用环境才需要重启才能生效。

    © 版权声明

    本文由盾科技原创,版权归 盾科技所有,未经允许禁止任何形式的转载。转载请联系candieraddenipc92@gmail.com