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"
答案 0 :(得分:1)
这是读取go
中的env变量的正确方法。
关于可能发生的事情,我唯一想到的就是您有两个不同的终端会话。在其中一个中,您设置了PSQL_URL
(正在运行其中的echo
),在另一个中则没有(您正在运行go
应用程序)。
编辑
现在用您的注释和Felix进行了扩展,这里的问题是您导出了一个变量,但没有使其成为永久变量,因此在启动新会话时该变量不存在。您需要做的是编辑~/.zshrc
并添加export PSQL_URL=foo
,这样,每当您开始新的终端会话时,变量都会被加载。