英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论