diff --git a/src/reader.go b/src/reader.go index 3e2cf0a..85cbf8b 100644 --- a/src/reader.go +++ b/src/reader.go @@ -4,7 +4,6 @@ import ( "bufio" "io" "os" - "os/exec" "github.com/junegunn/fzf/src/util" ) @@ -59,7 +58,7 @@ func (r *Reader) readFromStdin() { } func (r *Reader) readFromCommand(cmd string) { - listCommand := exec.Command("sh", "-c", cmd) + listCommand := util.ExecCommand(cmd) out, err := listCommand.StdoutPipe() if err != nil { return diff --git a/src/terminal.go b/src/terminal.go index 181b9c0..f1ddc48 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -4,7 +4,6 @@ import ( "bytes" "fmt" "os" - "os/exec" "os/signal" "regexp" "sort" @@ -720,11 +719,7 @@ func quoteEntry(entry string) string { func executeCommand(template string, replacement string) { command := strings.Replace(template, "{}", replacement, -1) - shell := os.Getenv("SHELL") - if len(shell) == 0 { - shell = "sh" - } - cmd := exec.Command(shell, "-c", command) + cmd := util.ExecCommand(command) cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr diff --git a/src/util/util.go b/src/util/util.go index e7e4f31..ab9e766 100644 --- a/src/util/util.go +++ b/src/util/util.go @@ -5,6 +5,7 @@ import "C" import ( "os" + "os/exec" "time" "unicode/utf8" ) @@ -126,3 +127,12 @@ func TrimLen(runes []rune) int { } return i - j + 1 } + +// ExecCommand executes the given command with $SHELL +func ExecCommand(command string) *exec.Cmd { + shell := os.Getenv("SHELL") + if len(shell) == 0 { + shell = "sh" + } + return exec.Command(shell, "-c", command) +}