一尘不染

使用“ os”包设置环境变量后,未在终端会话上设置环境变量

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正确打印,但是随后我希望在会话中也设置此env变量,但是:

>$ echo $FOO

>$

什么都没有$FOO,它是空的。这是预期的行为吗?如果是这样,我如何使这个env变量在我的会话中保持不变,并使用go类似这样的程序对其进行设置?


阅读 213

收藏
2020-07-02

共1个答案

一尘不染

创建新流程时,将复制父流程的环境。在新流程中对环境所做的更改不会影响父流程。修改环境后,您必须让程序启动Shell。

2020-07-02