Rumah >pembangunan bahagian belakang >Golang >Mengapakah Menetapkan Pembolehubah Persekitaran dalam Go Berterusan dalam Sesi Terminal Saya?
Dalam program Go, menetapkan pembolehubah persekitaran menggunakan pakej "os" mempengaruhi program persekitaran, tetapi pembolehubah tidak ditetapkan dalam sesi terminal semasa.
package main import ( "os" "fmt" ) func main() { _ = os.Setenv("FOO", "BAR") fmt.Println(os.Getenv("FOO")) }
Menjalankan atur cara mencetak "BAR" seperti yang dijangkakan, menunjukkan bahawa pembolehubah persekitaran telah ditetapkan untuk atur cara. Walau bagaimanapun, apabila menyemak pembolehubah persekitaran dalam terminal menggunakan arahan gema, ia kekal kosong.
Apabila proses baharu dibuat, ia mewarisi salinan persekitaran proses induk. Sebarang perubahan yang dibuat kepada persekitaran dalam proses baharu tidak disebarkan kembali kepada proses induk.
Untuk menjadikan pembolehubah persekitaran berterusan dalam sesi terminal semasa, program perlu menghasilkan cangkerang baharu selepas mengubah suai persekitaran. Ini boleh dicapai menggunakan pakej exec:
package main import ( "os/exec" ) func main() { _ = os.Setenv("FOO", "BAR") // Spawn a new shell with the updated environment cmd := exec.Command("bash") cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr // Start the shell err := cmd.Start() if err != nil { fmt.Println(err) return } // Wait for the shell to terminate err = cmd.Wait() if err != nil { fmt.Println(err) return } }
Sekarang, menjalankan program ini akan menetapkan pembolehubah persekitaran "FOO" kepada "BAR" dalam sesi terminal semasa.
Atas ialah kandungan terperinci Mengapakah Menetapkan Pembolehubah Persekitaran dalam Go Berterusan dalam Sesi Terminal Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!