当前位置: 首页 > news >正文

【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
  1. 保存并关闭。


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=$1case $ver in17) 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 ;;esacexport 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 即可

http://www.xdnf.cn/news/1178173.html

相关文章:

  • 基于Zig语言,opencv相关的c++程序静态交叉编译
  • 微服务-springcloud-springboot-Skywalking详解(下载安装)
  • 设置后轻松将 iPhone 转移到 iPhone
  • 基于SpringBoot+Uniapp的健身饮食小程序(协同过滤算法、地图组件)
  • Socket编程入门:从IP到端口全解析
  • C语言(长期更新)第5讲:数组练习(三)
  • Apache 消息队列分布式架构与原理
  • 开发避坑短篇(5):vue el-date-picker 设置默认开始结束时间
  • LLM层归一化:γβ与均值方差的协同奥秘
  • 力扣面试150题--在排序数组中查找元素的第一个和最后一个位置
  • 5.7 input子系统
  • 「Linux命令基础」查看用户和用户组状态
  • Silly Tavern 教程②:首次启动与基础设置
  • 文件管理困境如何破?ZFile+cpolar打造随身云盘新体验
  • Apache Flink 实时流处理性能优化实践指南
  • TRUMPF TruConvert DC 1008 – 1010 TruConvert System Control 逆变器
  • 货车手机远程启动的扩展功能有哪些
  • 从零用java实现 小红书 springboot vue uniapp(15) 集成minio存储 支持本地和minio切换
  • 如何在 Ubuntu 24.04 服务器或桌面版上安装和使用 gedit
  • AUTOSAR进阶图解==>AUTOSAR_SWS_BSWModeManager
  • 「iOS」——RunLoop学习
  • JS事件基础
  • 锁定锁存器 | 原理 / 应用 / 时序
  • C++中std::list的使用详解和综合实战代码示例
  • 深入掌握CSS Grid布局:每个属性详解与实战示例
  • MIT线性代数01_方程组的几何解释
  • MIT线性代数02_矩阵消元
  • 挖掘录屏宝藏:Screenity 深度解析与使用指南
  • 【C语言进阶】柔性数组
  • 【自动化测试】JMeter+Jenkins自动化接口与性能测试环境部署指南