嘗試在 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中文網其他相關文章!