输出 /bin/zsh 就改 .zshrc,输出 /bin/bash 才考虑 .bash_profile;macos catalina 起默认 zsh,.bash_profile 不自动加载;编辑 .zshrc 用 vim ~/.zshrc,插入模式写入,:wq 保存;java_home 必须用 $(/usr/libexec/java_home) 动态获取,path 中 $java_home/bin 需置于最前;验证需同时检查 java -version、echo $java_home、which java 三者路径一致。

怎么确认该改 .zshrc 还是 .bash_profile
直接运行 echo $SHELL,输出 /bin/zsh 就必须改 .zshrc;输出 /bin/bash 才考虑 .bash_profile。macOS Catalina(10.15)起默认就是 zsh,哪怕你以前配过 .bash_profile,它也不会自动加载——除非你手动改过 shell 类型。
vim ~/.zshrc 编辑时常见卡点
用 vim ~/.zshrc 打开后,先按 i 进入插入模式才能写内容;编辑完按 Esc 退出编辑,再输 :wq 回车保存退出。别漏掉冒号,也别按错成 :q!(不保存就退出)。
- 如果提示
Permission denied,说明文件被锁或路径错了——.zshrc在用户主目录下,不用sudo;加sudo反而会写到 root 用户的配置里,对你当前终端无效 - 如果打开是空文件,没问题,直接写就行;不存在就新建
- 别在文件开头或中间插一行
export JAVA_HOME=...,统一加在末尾,避免被后续语句覆盖
JAVA_HOME 必须用 /usr/libexec/java_home 动态获取
硬编码路径像 /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home 看似能用,但换 JDK 版本或重装后立刻失效。系统自带的 /usr/libexec/java_home 命令能自动定位当前可用 JDK。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 只装一个 JDK:写
export JAVA_HOME=$(/usr/libexec/java_home) - 明确要 JDK 17:写
export JAVA_HOME=$(/usr/libexec/java_home -v 17),避免装了多个版本后java -version和$JAVA_HOME对不上 - 别漏掉括号和美元符:
$()是命令替换,写成$(/usr/libexec/java_home)才生效,不是字符串字面量
PATH 顺序错了,java 命令就永远调不到你配的 JDK
必须把 $JAVA_HOME/bin 放在 PATH 最前面,否则系统会优先用 /usr/bin/java(macOS 自带的旧版或 stub)。
- 正确写法:
export PATH=$JAVA_HOME/bin:$PATH - 错误写法:
export PATH=$PATH:$JAVA_HOME/bin—— 这样/usr/bin/java永远优先 - 验证时别只跑
java -version,还要一起看:echo $JAVA_HOME和which java;三者路径必须一致,否则 Maven、Gradle 或 IDE 启动时仍会出错
最容易被忽略的是图形界面应用(比如 IntelliJ IDEA)——它启动时继承的是登录 shell 的环境,但有时不会重新读取 .zshrc,得手动在 IDE 设置里指定 JDK 路径,或者用 launchctl setenv 注入变量。这不是配置失败,而是 GUI 和终端环境隔离导致的。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










