尝试在 Go 程序中使用“os”包设置环境变量在以下时间内持续存在程序,但不在终端中session.
当系统中创建新进程时,它会继承其父进程的环境变量的副本。但是,子进程中对这些变量所做的更改不会传播回父进程。
为了确保环境变量在当前程序执行之后仍然存在,程序可以启动具有修改后的环境变量的新 shell(或终端会话)。这可以通过使用 os.StartProcess 函数和适当的命令行参数来实现。
以下代码片段演示了如何使用“os”包设置环境变量并启动具有修改后的环境的新 shell:
package main import ( "fmt" "os" "os/exec" ) func main() { // Set the environment variable _ = os.Setenv("FOO", "BAR") // Build the command to launch a new shell cmd := exec.Command("sh", "-c", "env") cmd.Env = os.Environ() // Launch the shell with the modified environment err := cmd.Run() if err != nil { fmt.Println("Failed to launch shell:", err) return } // Print the environment variable value within the new shell stdout, err := cmd.Output() if err != nil { fmt.Println("Failed to get shell output:", err) return } fmt.Println(string(stdout)) }
运行上述程序将使用更新的环境变量创建一个新的 shell 会话并打印其值。
以上是如何使环境变量更改在 Go 中跨进程持久化?的详细内容。更多信息请关注PHP中文网其他相关文章!