go - 使用 "os"包设置环境变量后,未在终端 session 中设置环境变量

标签 go

我有这段代码,我只想设置一个环境变量:

package main

import (
    "os"
    "fmt"
)

func main() {
    _ = os.Setenv("FOO", "BAR")
    fmt.Println(os.Getenv("FOO"))
}

运行这个文件:

>$ go run file.go
BAR

fmt.Println 调用正确地打印了 BAR,但是我希望这个环境变量也能在我的 session 中设置,但是:

>$ echo $FOO

>$

$FOO 上没有任何内容,它是空的。这是预期的行为吗?如果是这样,我怎样才能使这个 env 变量在我的 session 中持续存在,并使用这样的 go 程序设置它?

最佳答案

创建新进程时,会复制父进程的环境。新进程中环境的改变不会影响父进程。您必须让程序在修改环境后启动 shell。

关于go - 使用 "os"包设置环境变量后,未在终端 session 中设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17368392/

相关文章:

Go Fyne 项目无法从 Linux 交叉编译到 Windows

python - Golang单元测试python函数

Golang for 循环添加不一致的 i++

Go 中的数据库继承

go - 输入http://localhost:8080/wasm_exec.html时,Go Web程序集无法单击“运行”。

go - Gin 服务器的优雅停止

戈兰戈尔姆 : Is it possible to delete a record via a many2many relationship?

go - 为什么我要 make() 或 new()?

http - beego POST 请求体始终为空

go - 如何在没有所有这些级联错误圣诞树的情况下编写干净的代码?