goのexec
でrubyのgemを叩いてた時にハマる。
// rubyのTDを叩きたい!
cmd := exec.Command("td", args...)
// 環境変数設定
cmd.Env = []string{"SOME_PROP=0"}
// 実行
out, _ := cmd.CombinedOutput()
解決
cmd := exec.Command("td", args...)
// 既存の設定を取得して結合
cmd.Env = append(os.Environ(), "SOME_PROP=0")
out, _ := cmd.CombinedOutput()
原因
command.Env
に環境変数を設定すると既存の変数はクリアされます。(よく考えれば当たり前か)
自分のケースでは環境変数がクリアされた状態でrbenvのgemを叩きにいってエラー
それを避けるためために既存の変数をos.Environ()
で取得して、設定したい環境変数を追加した上で再設定しました。