Я установил некоторые переменные среды в/etc/profile, я могу получить к ним доступ из bash, но по какой-то причине я не могу получить их из Go.Невозможно получить переменную среды из/etc/profile в GoLang
/и т.д./Профиль:
...
TEST_ENV=test_me
я могу получить доступ к нему из Баш:
echo $TEST_ENV
test_me
Я не могу получить доступ к этой переменной из GO
os.Getenv("TEST_ENV") // returns ""
Если я перечислю доступные переменные среды с
os.Environ()
Я не вижу переменный я ищу, но есть несколько переменных, которые могли бы помочь:
SHELL=/bin/sh
USER=root
LOGNAME=root
Я думаю, что моя проблема связана с различными сессиями и оболочек, так что я даже попытался запустить
exec.Command("source /etc/profile")
и получить переменные после, но он все равно ничего не возвращает.
Можете ли вы дать мне несколько советов, как получить переменные окружения, если они установлены в/etc/profile? Я бы предпочел получить их из этого файла, но в случае необходимости я могу поместить переменные в другое место.
Переменные окружения * не * "получают [...] из [...] файла". Никогда. Это переменные среды, и если среда содержит переменную, то вы можете получить к ней доступ. Вы должны убедиться, что исполняемый файл Go работает в среде, где установлен TEST_ENV. Если TEST_ENV установлен в вашем локальном bash, и вы выполняете свой двоичный код Go из этого bash, среда * будет * распространяться в ваш двоичный файл, и вы * будете иметь доступ к ней. Покажите, как вы выполняете свой двоичный файл. Обратите внимание, что эта проблема полностью не связана с Go: вы просто вызываете свой двоичный файл без надлежащей среды. – Volker