Как получить переменную os env на OSX? - PullRequest
0 голосов
/ 17 октября 2019

OSX Catalina & zsh в качестве моего терминала.

У меня есть команда для запуска psql-соединения:

db, err := pgx.Connect(context.Background(), os.Getenv("PSQL_URL"))

Но os.Getenv("PSQL_URL") - пустая строка.

Как убедиться, что программа go может читать переменную моего окружения?

В терминале, если я echo $PSQL_URL, я получаю правильное значение postgresql://aod:toto@localhost/dbname

Если я экспортирую PSQL_URL="postgresql://aod:toto@localhost/dbname" перед запускомmain.go работает нормально

Я ищу постоянный способ сделать это.

ОБНОВЛЕНИЕ

Моя ошибка заключалась в следующем: Inside~/.zhsrc Я установил PSQL_URL="postgresql://aod:toto@localhost

вместо

export PSQL_URL="postgresql://aod:toto@localhost"

1 Ответ

1 голос
/ 17 октября 2019

Это правильный способ чтения переменной env в go.

Единственное, что мне приходит в голову о том, что может происходить, это то, что у вас есть два разных терминальных сеанса. В одном из них вы устанавливаете PSQL_URL (вы используете echo в этом), а в другом нет (вы запускаете ваше приложение go здесь).

EDIT

Теперь, когда ваши комментарии и комментарии Феликса расширены, проблема заключается в том, что вы экспортируете переменную, но не делаете ее постоянной, поэтому при запуске нового сеанса переменная не существует. Вам нужно отредактировать ~/.zshrc и добавить export PSQL_URL=foo, таким образом, при каждом запуске нового сеанса терминала переменная будет загружена.

...