LoginSignup
9
6

More than 5 years have passed since last update.

cmd.Envを設定してexecしたらコケた

Last updated at Posted at 2015-09-14

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()で取得して、設定したい環境変数を追加した上で再設定しました。

参考

Go: command with custom environment

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6