如何在OSX上获取os env变量?

时间:2019-10-16 21:16:48

标签: go environment-variables

OSX Catalina和zsh作为我的终端。

我有一个命令来启动psql连接:

db, err := pgx.Connect(context.Background(), os.Getenv("PSQL_URL"))

但是os.Getenv("PSQL_URL")是一个空字符串。

如何确保go程序可以读取我的环境变量?

在终端中,如果我echo $PSQL_URL得到正确的postgresql://aod:toto@localhost/dbname

如果我在运行main.go之前导出PSQL_URL="postgresql://aod:toto@localhost/dbname",则效果很好

我正在寻找一种持久的方法。

更新

我的错误如下: 我在~/.zhsrc内设置了 PSQL_URL="postgresql://aod:toto@localhost

代替

export PSQL_URL="postgresql://aod:toto@localhost"

1 个答案:

答案 0 :(得分:1)

这是读取go中的env变量的正确方法。

关于可能发生的事情,我唯一想到的就是您有两个不同的终端会话。在其中一个中,您设置了PSQL_URL(正在运行其中的echo),在另一个中则没有(您正在运行go应用程序)。

编辑

现在用您的注释和Felix进行了扩展,这里的问题是您导出了一个变量,但没有使其成为永久变量,因此在启动新会话时该变量不存在。您需要做的是编辑~/.zshrc并添加export PSQL_URL=foo,这样,每当您开始新的终端会话时,变量都会被加载。