Go by Example: 환경변수

환경변수Unix 프로그램에 설정 관련 정보를 전달하는데 일반적으로 사용되는 방법입니다. 환경변수를 어떻게 설정하는지, 어떻게 가져오는지, 그리고 설정된 환경변수들을 어떻게 보는지 봅시다.

package main
import "os"
import "strings"
import "fmt"
func main() {

환경변수의 키-값 쌍을 설정하려면 os.Setenv를 이용합니다. 어떤 키에 매핑된 값은 os.Getenv를 통해 가져올 수 있습니다. 이 함수에 주어진 키가 환경변수로 설정되지 않은 키라면 비어있는 문자열을 반환합니다.

	os.Setenv("FOO", "1")
	fmt.Println("FOO:", os.Getenv("FOO"))
	fmt.Println("BAR:", os.Getenv("BAR"))

os.Environ 함수를 이용하여 환경변수로 설정된 모든 키-값 쌍의 리스트를 볼 수 있습니다. 이 함수는 KEY=value와 같은 형태의 문자열로 구성된 슬라이스를 반환합니다. 슬라이스의 각 원소에 string.Split과 같은 함수를 이용하여 키와 값을 분리할 수 있습니다. 아래는 모든 키를 출력하는 예제입니다.

	fmt.Println()
	for _, e := range os.Environ() {
		pair := strings.Split(e, "=")
		fmt.Println(pair[0])
	}
}

프로그램을 돌려보면 FOO의 경우 우리가 프로그램 안에서 설정한 값을 가져오는 반면, BAR의 경우는 빈 문자열을 가져오는 것을 볼 수 있습니다.

$ go run environment-variables.go
FOO: 1
BAR: 

환경변수로 지정된 키의 리스트는 컴퓨터에 따라 다르게 보일 수 있습니다.

TERM_PROGRAM
PATH
SHELL
...

우리가 환경변수로 BAR를 먼저 설정해두면, 실행될 프로그램이 해당 키에 설정된 값을 가져갑니다.

$ BAR=2 go run environment-variables.go
FOO: 1
BAR: 2
...

다음 예제: 프로세스 생성.