goland统一设置环境变量需同时配置项目级和运行配置模板:在settings→go→go environment中设go111module、goproxy等,并在templates→go build中勾选“include system environment variables”且填写业务变量,二者缺一不可。

GoLand 修改运行环境变量不是改一次就全局生效,必须分清「项目级」和「运行配置级」两个作用域,漏掉任一层都会导致 os.Getenv 拿不到值。
项目级环境变量在哪配、为什么必须设
项目级变量控制 IDE 自身行为和所有新建运行配置的默认值,不设会导致 GOPROXY、GO111MODULE 等关键开关失效:
- 进
File → Settings → Go → Go Environment → Environment右侧点… - 添加
GO111MODULE=on、GOPROXY=https://goproxy.cn,direct、GOBIN=$GOPATH/bin - GOROOT 一般不用在这里填(已在 Settings → Go → GOROOT 单独指定),但 GOBIN 必须显式设,否则
go install会往$GOROOT/bin写,污染 SDK - 这个设置只对当前项目生效,多开项目时互不影响
运行配置里的 Environment variables 填了为啥没用
常见错误是只填了这里,却没启用继承或填错位置:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 必须进
Run → Edit Configurations → Templates → Go Build(或 Go Test)→ 勾选Include system environment variables - 在下方
Environment variables栏填业务变量,如APP_ENV=dev;LOG_LEVEL=debug(Windows)或APP_ENV=dev:LOG_LEVEL=debug(macOS/Linux) - 已存在的运行配置不会自动继承模板变更,需手动勾选
Use template settings或删掉重创建 - 别误填到
Program arguments—— 那里只传go run的命令行参数,不是环境变量
调试时环境变量还是空?检查这三点
验证不能只看 IDE 界面显示,要确认进程内真实值:
- 在代码里加
fmt.Println("APP_ENV =", os.Getenv("APP_ENV")),运行后看控制台输出 - 如果用
exec.Command("sh", "-c", "echo $APP_ENV"),必须勾选Include system environment variables,否则子 shell 不继承 - macOS/Linux 用户若从桌面图标启动 GoLand,
.zshrc里的export不会被加载;Windows 用户改完系统变量后必须重启 GoLand 才能读取新值
真正容易被忽略的是:项目级设置和运行配置模板必须同时生效,且已存在的配置不会自动同步——改完模板后,老配置得手动更新或重建,否则调试和运行行为不一致。










