【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 即可

相关推荐
微信-since811926 小时前
【mac】 mac使用
macos
REDcker1 天前
macOS「系统数据」暴涨到 几百GB?一篇文章教你安全清理(含排查顺序)
macos
sysinside1 天前
macOS Sequoia 15.7.2 (24G325) 正式版 ISO、IPSW、PKG 下载
macos·sequoia
只是有点小怂1 天前
macOS 没有像 Windows 上的 MobaXterm 的工具
macos
小雨青年1 天前
环境准备 Windows Mac 下 Docker Desktop 的安装与镜像源加速
windows·macos·docker
数据知道1 天前
一文掌握 MongoDB 详细安装与配置(Windows / Linux / macOS 全平台)
linux·数据库·windows·mongodb·macos
知1而N1 天前
电脑上运行APK文件(Android应用程序包),需要借助特定的软件或功能,因为Windows/macOS/Linux系统无法原生直接运行安卓应用
android·macos·电脑
island13141 天前
Mac 用户久等了!节点小宝 4.0 macOS版,正式登陆!
macos
440资源库1 天前
从 Windows 转向 macOS:数据迁移完整指南
windows·macos·win向maos迁移数据