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

标签 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

我猜我的问题与不同的 session 和 shell 有关,所以我什至尝试运行

exec.Command("source /etc/profile")

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

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

最佳答案

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

关于bash - 无法从GoLang中的/etc/profile获取环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42092069/

相关文章:

string - 为什么string不能转为uint8和int32以外的其他数据类型数组?

string - 附加来自 GO MAP 的关键数据

java - Android studio - 如何直接使用java方法的终端?

linux - 使用 bash/linux 在特定行之后创建一个空行

go - 将oracle时间字符串转换为time.Time golang

java - 如何将 Hudson 的 env.EXECUTOR_NUMBER 传递给 log4j 属性和 Java 的 System.getProperty

docker - 使用 docker-compose.yml 未在 docker 容器中设置环境变量

vbscript - 从 VBScript 重新读取环境变量

linux - 在sed中的两个模式之间提取

regex - 如何在 bash 中匹配这个字符串?