How to load both .env file and the OS environment variables in golang

huangapple go评论74阅读模式
英文:

How to load both .env file and the OS environment variables in golang

问题

err := godotenv.Load(".env")
if err != nil { panic(err.Error()) }

shell := os.Getenv("SHELL")
fmt.Println(shell)

我在我的.env文件中设置了SHELL=/bin/zsh,但似乎操作系统首先在操作系统环境变量列表中查找给定的键,然后再检查.env文件。有没有办法将这两者分开?

英文:
err := godotenv.Load(".env")
if err != nil { panic(err.Error()) }

shell := os.Getenv("SHELL")
fmt.Println(shell)

I set the SHELL=/bin/zsh in my .env file, but it seems the OS first looks for the given key in the OS environment variable list, and then it checks the .env file. Is there a way to separate these two?

答案1

得分: 3

是的,有一种方法可以解决这个问题。
github.com/joho/godotenv 包中有一个名为 Read() 的函数,你可以使用它将你的 .env 文件加载到一个映射数据结构中。

envFile, _ := godotenv.Read(".env")

envFileShell := envFile["SHELL"]
fmt.Println(envFileShell) // 将输出 /bin/zsh(在 .env 文件中设置的值)

osShell := os.Getenv("SHELL")
fmt.Println(osShell) // 将输出操作系统中设置的值

请注意,这只是一个示例代码,你需要根据自己的实际情况进行适当的修改。

英文:

Yes there is a way to solve this problem .
the github.com/joho/godotenv has a function called Read() . you can load your .env file into a map data structure .

envFile, _ := godotenv.Read(".env")

envFileShell = envFile["SHELL"]
fmt.Println(envFileShell) // will be /bin/zsh (what you set in .env file)

osShell := os.Getenv("SHELL") 
fmt.Println(osShell) // will be whatever it is set in your operating system 

huangapple
  • 本文由 发表于 2022年9月2日 22:31:54
  • 转载请务必保留本文链接:https://go.coder-hub.com/73584149.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定