From 96c3de12eb717e33b175fd01a9aaaac84ea8d6af Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sun, 12 Feb 2023 22:06:21 +0900 Subject: Run 'become' only when the command template is properly evaluated --- src/terminal.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/terminal.go b/src/terminal.go index 13968a39..18f83530 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -2863,19 +2863,21 @@ func (t *Terminal) Loop() { switch a.t { case actIgnore: case actBecome: - _, list := t.buildPlusList(a.a, false) - command := t.replacePlaceholder(a.a, false, string(t.input), list) - shell := os.Getenv("SHELL") - if len(shell) == 0 { - shell = "sh" - } - shellPath, err := exec.LookPath(shell) - if err == nil { - t.tui.Close() - if t.history != nil { - t.history.append(string(t.input)) + valid, list := t.buildPlusList(a.a, false) + if valid { + command := t.replacePlaceholder(a.a, false, string(t.input), list) + shell := os.Getenv("SHELL") + if len(shell) == 0 { + shell = "sh" + } + shellPath, err := exec.LookPath(shell) + if err == nil { + t.tui.Close() + if t.history != nil { + t.history.append(string(t.input)) + } + syscall.Exec(shellPath, []string{shell, "-c", command}, os.Environ()) } - syscall.Exec(shellPath, []string{shell, "-c", command}, os.Environ()) } case actExecute, actExecuteSilent: t.executeCommand(a.a, false, a.t == actExecuteSilent, false) -- cgit v1.2.3