os.GetEnv()在设置env变量后不起作用

问题描述 投票:2回答:3

我有这种情况不工作的功能

os.GetEnv()

我在我的系统ADDR =“192.168.1.100”trought文件.bashrc和.profile中设置了一个变量。所以,如果我打开终端并输入以下命令,我会得到很好的结果

$ echo $ ADDR

192.168.1.100

为什么在下面非常简单的程序我得到错误如果变量在系统中设置正确?

func main(){
    addr := os.Getenv("ADDR")
    if addr == "" {
        return errors.New("missing addres")
    }
}

我也多次重启IDE。试着再次写入终端

$ env ADDR =“192.168.1.100”

但仍然有同样的效果。

go environment-variables
3个回答
6
投票

我认为问题可能是你没有导出变量,所以子进程(即你的ide,shell,没有得到它)​​。

ADDR="192.168.1.100" go run main.go

要么

export ADD="192.168.1.100"
go run main.go

0
投票

如果你去程序是另一个应用程序,如Mac中的程序,然后使用以下来设置它:

sudo launchctl setenv <env var> <env var value>

0
投票

你可以将你的env变量放在.env文件中,并在运行它时将其导出:

出口less .env | xargs;去运行cmd / main.go

© www.soinside.com 2019 - 2024. All rights reserved.