Percubaan untuk menetapkan pembolehubah persekitaran menggunakan pakej "os" dalam program Go berterusan dalam program, tetapi tidak dalam terminal session.
Apabila proses baharu dicipta dalam sistem, ia mewarisi salinan pembolehubah persekitaran proses induknya. Walau bagaimanapun, perubahan yang dibuat kepada pembolehubah ini dalam proses anak tidak merambat kembali kepada proses induk.
Untuk memastikan pembolehubah persekitaran berterusan melangkaui pelaksanaan program semasa, program boleh melancarkan shell baharu (atau sesi terminal) dengan pembolehubah persekitaran yang diubah suai. Ini boleh dicapai dengan menggunakan fungsi os.StartProcess dengan argumen baris arahan yang sesuai.
Coretan kod berikut menunjukkan cara untuk menetapkan pembolehubah persekitaran menggunakan pakej "os" dan pelancaran shell baharu dengan persekitaran yang diubah suai:
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)) }
Menjalankan program di atas akan mencipta sesi shell baharu dengan pembolehubah dan cetakan persekitaran yang dikemas kini nilainya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjadikan Perubahan Pembolehubah Persekitaran Berterusan Merentas Proses dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!