Ein Versuch, eine Umgebungsvariable mithilfe des „os“-Pakets in einem Go-Programm festzulegen, bleibt bestehen Das Programm, aber nicht in der Terminalsitzung.
Wenn ein neuer Prozess ist Wenn ein Prozess in einem System erstellt wird, erbt er eine Kopie der Umgebungsvariablen seines übergeordneten Prozesses. Änderungen, die an diesen Variablen innerhalb des untergeordneten Prozesses vorgenommen werden, werden jedoch nicht an den übergeordneten Prozess zurückgegeben.
Um sicherzustellen, dass die Umgebungsvariable über die aktuelle Programmausführung hinaus bestehen bleibt, kann das Programm eine starten neue Shell (oder Terminalsitzung) mit den geänderten Umgebungsvariablen. Dies kann durch die Verwendung der Funktion os.StartProcess mit entsprechenden Befehlszeilenargumenten erreicht werden.
Der folgende Codeausschnitt zeigt, wie man eine Umgebungsvariable mithilfe des Pakets „os“ festlegt und startet eine neue Shell mit der geänderten Umgebung:
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)) }
Durch Ausführen des obigen Programms wird eine neue Shell-Sitzung mit der aktualisierten Umgebungsvariablen erstellt und diese gedruckt Wert.
Das obige ist der detaillierte Inhalt vonWie kann ich Änderungen an Umgebungsvariablen prozessübergreifend in Go dauerhaft machen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!