【MAC电脑系统变量管理】

一套「通用 + 可维护」的 macOS 环境变量配置方案,涵盖 JDK 与 Python(含虚拟环境)。

整套做法基于 zsh (macOS 10.15 以后默认 Shell),如果你还在用 bash,把 .zshrc 替换为 .bash_profile 即可。

一、创建系统变量文件

1、创建1个专门放环境变量的文件

以后所有 PATH、JAVA_HOME、PYTHON_HOME 都写这里,避免 .zshrc 里东拼西凑。

复制代码
#创建shell目录
mkdir -p ~/.config/shell


#在shell下创建env.sh文件
touch ~/.config/shell/env.sh

2. 在 ~/.zshrc 里引入上面的文件

只需加一行,以后改环境变量不需要去碰 .zshrc

复制代码
echo '[ -f ~/.config/shell/env.sh ] && source ~/.config/shell/env.sh' >> ~/.zshrc

上面的意思其实就是「把这一行字写进 .zshrc 文件末尾」。

有2种常见做法,你挑一个最顺手的即可。


方法 A:一句命令(复制-粘贴即可)

打开「终端」,直接执行:

复制代码
echo '[ -f ~/.config/shell/env.sh ] && source ~/.config/shell/env.sh' >> ~/.zshrc

解释:

  • echo ... >> ~/.zshrc 会把引号里的内容追加到文件末尾,不会覆盖原有内容。

  • 执行完没有任何输出就是成功。


方法 B:用文本编辑器手动加
  1. 在终端输入 open -e ~/.zshrc(会弹出 TextEdit)。

  2. 把下面这一行粘到文件最后(单独一行):

    [ -f ~/.config/shell/env.sh ] && source ~/.config/shell/env.sh

  3. 保存并关闭。


3、最后让改动立即生效

复制代码
source ~/.zshrc

完成!

PS:删除文件

1、想删除 ~/.config/shell/env.sh这个文件

直接终端里执行:

复制代码
rm ~/.config/shell/env.sh

2、如果你想连目录一起删掉(里面没别的文件):

复制代码
rmdir ~/.config/shell

二、配置 Python(系统 + Homebrew + pyenv)

1 系统自带 /usr/bin/python3不动

保持不动,留给 macOS 自用。

2 安装 pyenv 用于管理多版本

在终端里执行:

复制代码
brew install pyenv

3 让终端每次启动都加载 pyenv

~/.config/shell/env.sh 配置python变量

复制代码
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

可用如下方式操作上面:

方法 1:一句命令(推荐)

打开终端,直接复制粘贴执行:

复制代码
cat >> ~/.config/shell/env.sh <<'EOF'

# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
EOF
方法 2:终端打开文件,进行文本粘贴
复制代码
open -e ~/.config/shell/env.sh

手动粘贴后保存即可。

4 安装具体python版本示例:

复制代码
pyenv install 3.11.9 3.12.3  (一次安装2个版本)
pyenv global 3.12.3        # 设置为全局默认

5 虚拟环境(可选但强烈建议)

1、安装 pyenv-virtualenv 插件

复制代码
brew install pyenv-virtualenv

装完后重新加载一次 shell (新开标签页 或 执行 source ~/.zshrc

2、验证

复制代码
pyenv virtualenv --help  # 不再报错,能看到帮助

3、创建虚拟环境

复制代码
#创建虚拟环境
pyenv virtualenv 3.12.3 proj312(虚拟环境名称)

#激活虚拟环境
pyenv activate proj312

6 让配置立即生效(一定要执行,全局变量才生效)

复制代码
source ~/.zshrc

7 验证

复制代码
java -version
python --version
which java
which python

python --version   # 应该显示 Python 3.12.3
which python       # 应该显示 ~/.pyenv/shims/python

8 全部完成!以后想再装别的版本,只要:

复制代码
pyenv install 3.10.14
pyenv global 3.10.14   # 切换全局默认

三、关于pyenv管理python版本

1、pyenv 提供了 3 个层级,按优先级从高到低:

  1. pyenv shell -- 只对「当前终端会话」生效,关掉窗口就失效

  2. pyenv local -- 只对「当前目录及子目录」生效,写在该目录下的 .python-version 文件里

  3. pyenv global -- 系统全局默认,其他两级都没设置时才会用它


2、最常用的两种做法

场景 命令示例 影响范围
全局默认 pyenv global 3.11.9 整台电脑(除非被下面两级覆盖)
项目单独指定 在项目目录里执行 pyenv local 3.10.14 仅该项目目录

3、快速切换示例

  1. 先确认已安装目标版本

    复制代码
    pyenv versions        # 列出现有版本
  2. 临时在当前终端试试

    复制代码
    pyenv shell 3.9.19
    python --version      # 显示 3.9.19

    关掉终端后自动回到 global 的版本。

  3. 给某个项目单独指

    复制代码
    #打开项目
    cd ~/myproject
    
    #指定该项目的python版本
    pyenv local 3.8.18

    以后只要 cd ~/myproject,就会自动切到 3.8.18;离开目录就恢复。


一句话总结

  • 想「整台电脑」都用某个版本 → pyenv global 版本号

  • 想「单个项目」用另一个版本 → 在项目目录里 pyenv local 版本号

4、如何让某一个项目指定python版本

在项目目录里执行一次 pyenv local <版本号>,就会在该目录下自动生成 .python-version 文件,之后每次 cd 进来都会自动切到指定版本。

进入你的项目目录

复制代码
cd ~/myproject   # 换成你自己的目录

2️⃣ 指定本地版本

假设要用 3.11.9 (前提:已 pyenv install 3.11.9):

复制代码
pyenv local 3.11.9

执行后两件事立即发生:

  • 当前终端立即切到 3.11.9

  • 目录里多一个 .python-version 文件,内容就是 3.11.9


3️⃣ 验证

复制代码
python --version   # 应输出 3.11.9
pyenv version      # 显示当前生效版本及来源

4️⃣ 以后怎么改

  • 想换版本:再执行一次 pyenv local 3.10.14.python-version文件会被覆盖)。

  • 想取消:删掉 .python-version 文件即可,或直接 pyenv local --unset

5️⃣ 让 Git 忽略(可选)

  • 如果不想让 .python-version 进仓库,在项目 .gitignore 里加一行:

    复制代码
    .python-version

    就这么简单。

多项目间切换python版本

复制代码
想在多个项目间切换Python版本,给 每个项目单独设一次 pyenv local,

然后你就只需要 cd 进目录,Python 版本会自动切,无需手动再敲命令。

四、配置 JDK(多版本并存,一键切换)

1、用 Homebrew 安装主流 JDK(举例:Temurin 17 & 21)

**先装两个 JDK,**把 17 和 21 都装进 Mac,命令就是

复制代码
brew install temurin17 temurin21

Homebrew 会把 JDK 装到 /Library/Java/JavaVirtualMachines/temurin-XX.jdk/Contents/Home

2、在环境变量文件,创建切换jdk的函数

我们在 ~/.config/shell/env.sh 里放一段只有 10 行的函数,名字叫 jdk_switch

复制代码
# 列出所有已装 JDK
jdk_switch() {
    local ver=$1
    case $ver in
        17) export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home ;;
        21) export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home ;;
        *) echo "Usage: jdk 17|21"; return 1 ;;
    esac
    export PATH="$JAVA_HOME/bin:$PATH"
    java -version
}

# 默认启用 21
jdk_switch 21

说明:

函数做的事就是:
把 JAVA_HOME 设成对应版本的路径
把 $JAVA_HOME/bin 放到 PATH 最前面
并且立刻执行 java -version 让你确认jdk当前版本

以后在终端里直接敲:

复制代码
jdk_switch 17     # 立刻把 JAVA_HOME 指到 17
jdk_switch 21     # 立刻把 JAVA_HOME 指到 21

以后想切版本,终端里敲:jdk_switch 17 即可

相关推荐
Digitally4 小时前
如何将荣耀手机的照片传输到 Mac
macos·智能手机
Digitally4 小时前
如何将 iPhone 备份到 Mac/MacBook
macos·ios·iphone
猫头虎4 小时前
[精选] 2025最新生成 SSH 密钥和 SSL 证书的标准流程(Linux/macOS/Windows系统服务器通用方案)
linux·服务器·开发语言·macos·ssh·ssl·ai编程
Everbrilliant8918 小时前
macOs上交叉编译ffmpeg及安装ffmpeg工具
macos·ffmpeg·ffmpeg交叉编译·ffmpeg工具安装
sunshine__sun1 天前
快速启用 JMeter(macOS Automator 创建 JMeter 脚本)
jmeter·macos
liliangcsdn1 天前
mac llama_index agent算术式子计算示例
人工智能·python·macos·llama
i建模1 天前
最新免费使用Claude Code指南(Windows & macOS/Linux)
linux·windows·macos
Auspemak-Derafru1 天前
使用ffmpeg转码h265后mac默认播放器不支持问题
macos·ffmpeg
Resean02231 天前
MACOS安装配置Gradle
macos