56

I can use this out, err := exec.Command("git", "log").Output() to get an output of the command which will run in the same path as the executable location.

How do I specify in which folder I want to run the command?

Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
Sergei Basharov
  • 51,276
  • 73
  • 200
  • 335

1 Answers1

135

exec.Command() returns you a value of type *exec.Cmd. Cmd is a struct and has a Dir field:

// Dir specifies the working directory of the command.
// If Dir is the empty string, Run runs the command in the
// calling process's current directory.
Dir string

So simply set it before calling Cmd.Output():

cmd:= exec.Command("git", "log")
cmd.Dir = "your/intended/working/directory"
out, err := cmd.Output()

Also note that this is specific to git command; git allows you to pass the path using the -C flag, so you may also do what you want like this:

out, err := exec.Command("git", "-C", "your/intended/working/directory", "log").
    Output()
icza
  • 389,944
  • 63
  • 907
  • 827