Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Can';t从GoLang中的/etc/profile获取环境变量_Bash_Go_Environment Variables_Sh - Fatal编程技术网

Bash Can';t从GoLang中的/etc/profile获取环境变量

Bash Can';t从GoLang中的/etc/profile获取环境变量,bash,go,environment-variables,sh,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=r

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

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

环境变量不是“从[…]文件获取[…]”。从未。这些是环境变量,如果环境包含该变量,则您可以访问它。您必须确保Go可执行文件在设置了TEST_ENV的环境中运行。如果在本地bash中设置了TEST_ENV,并且您从该bash执行Go二进制文件,那么环境将被传播到您的二进制文件,您将可以访问它。演示如何执行二进制文件。请注意,这个问题与Go完全无关:您只是在没有适当环境的情况下调用二进制文件。