os.GetEnv()在set env变量之后工作

时间:2016-09-21 17:34:08

标签: go environment-variables

我有案例工作功能

  

os.GetEnv()

我在我的系统中设置了一个变量ADDR =" 192.168.1.100"文件 .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"

但仍然有同样的效果。

5 个答案:

答案 0 :(得分:6)

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

ADDR="192.168.1.100" go run main.go

export ADD="192.168.1.100"
go run main.go

答案 1 :(得分:0)

如果您进入的程序是Mac中另一个类似于程序的应用程序,请使用以下命令进行设置:

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

答案 2 :(得分:0)

您可以将env变量保存在.env文件中,并在运行时将其导出,如下所示:

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

答案 3 :(得分:0)

我有同样的问题,对我来说是因为我使用sudo运行程序。

我以普通用户身份检查了环境变量。但是以root用户身份运行该程序。所以他们的环境可能不一样。

答案 4 :(得分:-2)

我只是遇到了这个问题,所以我没有以root身份运行程序来解决了这个问题。我不确定原因,但是现在可以了!