Основы переменных окружения Unix

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом практическом занятии будут рассмотрены основы переменных окружения в Unix-программах. Переменные окружения используются для передачи конфигурационных данных программам.

Переменные окружения

В этом практическом занятии вам нужно будет задавать, получать и перечислять переменные окружения.

  • Используйте os.Setenv, чтобы задать пару ключ/значение.
  • Используйте os.Getenv, чтобы получить значение для ключа.
  • Используйте os.Environ, чтобы перечислить все пары ключ/значение в окружении.
  • Используйте strings.SplitN, чтобы разделить ключ и значение.
## Запуск программы показывает, что мы получаем значение
## для `FOO`, которое мы задали в программе, но что
## `BAR` пусто.
$ go run environment-variables.go
FOO: 1
BAR:

## Список ключей в окружении зависит от вашей
## конкретной машины.
TERM_PROGRAM
PATH
SHELL
...
FOO

## Если мы сначала зададим `BAR` в окружении, то при
## запуске программы оно получит это значение.
$ BAR=2 go run environment-variables.go
FOO: 1
BAR: 2
...

Ниже представлен полный код:

// [Переменные окружения](https://en.wikipedia.org/wiki/Environment_variable)
// - это универсальный механизм для [передачи конфигурационных
// данных Unix-программам](https://www.12factor.net/config).
// Посмотрим, как задавать, получать и перечислять переменные окружения.

package main

import (
    "fmt"
    "os"
    "strings"
)

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`. Можно использовать `strings.SplitN`,
    // чтобы получить ключ и значение. Здесь мы выводим все ключи.
    fmt.Println()
    for _, e := range os.Environ() {
        pair := strings.SplitN(e, "=", 2)
        fmt.Println(pair[0])
    }
}

Резюме

В этом практическом занятии вы узнали, как задавать, получать и перечислять переменные окружения в Unix-программах. Это фундаментальный концепт, который используется многими программами для передачи конфигурационных данных.