创建环境变量

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

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)
}

huangapple
  • 本文由 发表于 2021年7月30日 19:08:36
  • 转载请务必保留本文链接:https://go.coder-hub.com/68589965.html
匿名

发表评论

匿名网友

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

确定