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

Ben*_*dai 3 bash environment-variables sh go

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

/etc/配置文件:

...
TEST_ENV=test_me
Run Code Online (Sandbox Code Playgroud)

我可以从 bash 访问它:

echo $TEST_ENV
test_me
Run Code Online (Sandbox Code Playgroud)

我无法从 GO 访问此变量

os.Getenv("TEST_ENV") // returns ""
Run Code Online (Sandbox Code Playgroud)

如果我列出可用的环境变量

os.Environ()
Run Code Online (Sandbox Code Playgroud)

我没有看到我正在寻找的变量,但有一些变量可能会有所帮助:

SHELL=/bin/sh
USER=root
LOGNAME=root
Run Code Online (Sandbox Code Playgroud)

我想我的问题与不同的会话和外壳有关,所以我什至尝试运行

exec.Command("source /etc/profile")
Run Code Online (Sandbox Code Playgroud)

并获取之后的变量,但它仍然没有返回任何内容。

您能给我一些如何获取在 /etc/profile 中设置的环境变量的提示吗?我更喜欢从该文件中获取它们,但如果有必要,我也可以将变量放在不同的位置。

And*_*eig 5

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