电脑必备
给同事配开发环境,我把常用运行时全塞进同一目录,结果环境变量打架了
69 0 13
上周帮新来的同事配开发环境,想着省事,把 JDK、Python、Node 全装到 D:\DevTools\ 下面,每个建子目录,觉得这样干净又集中。结果第二天就出问题了。
现象:命令行敲 java -version 显示 JDK 17,但项目里跑 Maven 死活报 JAVA_HOME 指向不对。where java 一查,发现 System32 里躺了个 java.exe(Oracle 老版本残留),PATH 顺序一变就乱套。
排查过程:
- 先看 PATH:用户变量和系统变量里都塞了 DevTools 路径,重复不说,顺序还不一致。
- 再看环境变量:
JAVA_HOME、PYTHON_HOME都在,但Path里用了%PYTHON_HOME%\bin这种写法,某些启动器(比如 IDEA 的终端)解析时没展开,直接当相对路径处理。 - 最后用
cmd /c set和 PowerShell 的$env:PATH分别输出对比,发现两者加载顺序有差异,cmd 先读系统变量再拼用户变量,PowerShell 在某些版本里是相反的。
结论:
- 别把多个运行时塞同一个父目录,尤其别让它们的
bin目录都出现在 PATH 里。 - 环境变量里尽量用绝对路径,别依赖
%VAR%嵌套,至少你得确认所有调用方都支持。 - 旧版 JDK 的
java.exe被复制到System32是历史遗留,装新 JDK 时最好手动清掉,不然 PATH 一抖它就跑出来。
后来我改成每个运行时独立目录,PATH 只加当前项目需要的那个,再用 direnv 这类工具按目录切换,世界清静了。
抛个问题:你们配环境变量时,是习惯把 bin 直接堆到 PATH 里,还是用脚本或工具动态切换?有没有碰到过 %VAR% 嵌套不展开的坑?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
