Go 프로그램에서 "os" 패키지를 사용하여 환경 변수를 설정하면 프로그램에 영향을 줍니다. 환경이지만 현재 터미널에 변수가 설정되어 있지 않습니다. session.
package main import ( "os" "fmt" ) func main() { _ = os.Setenv("FOO", "BAR") fmt.Println(os.Getenv("FOO")) }
프로그램을 실행하면 예상대로 "BAR"가 인쇄되어 프로그램에 환경 변수가 설정되었음을 나타냅니다. 그런데 echo 명령어를 사용하여 터미널에서 환경변수를 확인해 보면 비어있는 상태로 남아있습니다.
새 프로세스가 생성되면 상위 프로세스의 환경 복사본을 상속받습니다. 새 프로세스의 환경에 대한 변경 사항은 상위 프로세스로 다시 전파되지 않습니다.
환경 변수가 현재 터미널 세션에서 유지되도록 하려면 프로그램이 환경을 수정한 후 새 셸을 생성해야 합니다. 이는 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 } }
이제 이 프로그램을 실행하면 현재 터미널 세션에서 환경 변수 "FOO"가 "BAR"로 설정됩니다.
위 내용은 Go의 환경 변수 설정이 내 터미널 세션에서 지속되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!