>我在/etc/profile 中设置了一些环境变量,我可以从 bash 访问它们,但由于某种原因我无法从 Go 获取它们。
/etc/profile:
...
TEST_ENV=test_me
我可以从 bash 访问它:
echo $TEST_ENV
test_me
我无法从 GO 访问此变量
os.Getenv("TEST_ENV") // returns ""
如果我列出可用的环境变量
os.Environ()
我没有看到我正在寻找的变量,但有几个变量可能会有所帮助:
SHELL=/bin/sh
USER=root
LOGNAME=root
我想我的问题与不同的会话和 shell 有关,所以我什至尝试运行
exec.Command("source /etc/profile")
并在之后获取变量,但它仍然不返回任何内容。
你能给我一些提示,如果它们在/etc/profile 中设置,如何获取环境变量吗?我更喜欢从该文件中获取它们,但如果有必要,我也可以将变量放在不同的位置。
在 bash 中设置环境变量时,默认情况下不会导出该变量。只有导出的环境变量才会传递给由 shell 创建的进程(即您运行的程序(。试试export TEST_ENV=test_me
。