2017-02-07 11 views
0

/etc/profileにいくつかの環境変数を設定しましたが、bashからアクセスできますが、なんらかの理由でGoから取得できません。GoLangの/ etc/profileから環境変数を取得できません

は/ etc/profile:

... 
TEST_ENV=test_me 

私はbashのからアクセスすることができます

echo $TEST_ENV 
test_me 

を私がリストアップした場合、私はGO

os.Getenv("TEST_ENV") // returns "" 

からこの変数にアクセスすることはできません使用可能な環境変数は

です私は私が探している変数が表示されていない

が、そこに役立つかもしれないいくつかの変数:

SHELL=/bin/sh 
USER=root 
LOGNAME=root 

私は私の問題は、異なるセッションやシェルに関連していると思うので、私も実行してみました

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

と変数を取得しますが、それでも何も返しません。

環境変数が/ etc/profileに設定されている場合、環境変数を取得する方法を教えていただけますか?私はそのファイルからそれらを得ることを好むでしょうが、必要であれば、変数を別の場所に配置することもできます。

+4

環境変数は、 "[...]ファイルから" [...]を取得しません。決して。これらは環境変数です。環境に変数が含まれている場合は、その変数にアクセスできます。 Go実行可能ファイルがTEST_ENVが設定されている環境で実行されていることを確認する必要があります。あなたのローカルbashにTEST_ENVが設定されていて、そのbashからあなたのGoバイナリを実行すると、バイナリに環境*が伝播され、*あなたはそれにアクセスします*。バイナリをどのように実行するかを示します。この問題は、Goとは全く関係がないことに注意してください。適切な環境を持たないバイナリを呼び出すだけです。 – Volker

答えて

1

bashで環境変数を設定すると、デフォルトでエクスポートされません。エクスポートされた環境変数のみが、シェルによって作成されたプロセス(つまり、実行するプログラム)に渡されます。試してくださいexport TEST_ENV=test_me

関連する問題