我在下面的代码中只想设置一个环境变量:
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变量,但是:
fmt.Println
BAR
>$ echo $FOO >$
什么都没有$FOO,它是空的。这是预期的行为吗?如果是这样,我如何使这个env变量在我的会话中保持不变,并使用go类似这样的程序对其进行设置?
$FOO
go
创建新流程时,将复制父流程的环境。在新流程中对环境所做的更改不会影响父流程。修改环境后,您必须让程序启动Shell。