英文:
Creating Env variable
问题
在我的 Windows 11 机器上,我想检查环境变量 "keyTemp" 是否存在。如果存在,我需要读取它的值;如果不存在,我需要设置它。所以我写了下面的代码:
tmpDir, exists := os.LookupEnv("keyTemp")
fmt.Println("keyTemp: ", exists)
fmt.Println("tmpDir: ", tmpDir)
if !exists {
tmpDir = os.TempDir() + "\\fitz"
fmt.Println("tmpDir: ", tmpDir)
err = os.Setenv("keyTemp", tmpDir)
if err != nil {
panic(err)
}
}
但是每次重新运行二进制文件后,我都得到 "exists" 的值为 false
,我的环境变量从未被创建!
英文:
At my Windows 11 machine, trying to check if the env variable "" exists or no, if yes, I need to read its value, if not there I need to set it, so I wrote the below code:
tmpDir, exists := os.LookupEnv("keyTemp")
fmt.Println("keyTemp: ", exists)
fmt.Println("tmpDir: ", tmpDir)
if !exists {
tmpDir = os.TempDir() + "\\fitz"
fmt.Println("tmpDir: ", tmpDir)
err = os.Setenv("keyTemp", tmpDir)
if err != nil {
panic(err)
}
}
But always (after rerunning the binary) I'm getting the "exists" value as false
and my env variable is never created!
答案1
得分: 0
感谢 @mkopriva 的帮助,看起来在 Go 语言本身中没有直接的方法,所以选择使用 cmd
,所以我这样做可以工作:
tmpDir = os.TempDir() + "\\fitz"
// err = os.Setenv("keyTemp", tmpDir)
err = exec.Command(`SETX`, `keyTemp`, tmpDir).Run()
if err != nil {
fmt.Printf("错误:%s\n", err)
}
英文:
Thanks to @mkopriva, it looks no direct way at go lang itself, so the option is to use cmd
, so it worked with me as:
tmpDir = os.TempDir() + "\\fitz"
// err = os.Setenv("keyTemp", tmpDir)
err = exec.Command(`SETX`, `keyTemp`, tmpDir).Run()
if err != nil {
fmt.Printf("Error: %s\n", err)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论