无法从GoLang中的/ etc / profile获取环境变量

时间:2017-02-07 14:13:59

标签: bash go environment-variables sh

我在/ etc / profile中设置了一些环境变量,我可以从bash访问它们,但由于某些原因我无法从Go获取它们。

的/ etc /配置文件:

...
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中,您能给我一些提示吗?我更喜欢从该文件中获取它们,但如果有必要,我也可以将变量放在不同的位置。

1 个答案:

答案 0 :(得分:1)

在bash中设置环境变量时,默认情况下不会导出。只有导出的环境变量才会传递给shell创建的进程(即您运行的程序)。试试export TEST_ENV=test_me