diff --git a/internal/shell/shell.go b/internal/shell/shell.go index f9f4656b82bbb6ee14b38469a20d493d98354b4a..e5a54f01c403ae1b8de681616c5d693bc842ac14 100644 --- a/internal/shell/shell.go +++ b/internal/shell/shell.go @@ -247,12 +247,14 @@ func (s *Shell) newInterp(stdout, stderr io.Writer) (*interp.Runner, error) { ) } -// updateShellFromRunner updates the shell from the interpreter after execution +// updateShellFromRunner updates the shell from the interpreter after execution. func (s *Shell) updateShellFromRunner(runner *interp.Runner) { s.cwd = runner.Dir - s.env = nil + s.env = s.env[:0] for name, vr := range runner.Vars { - s.env = append(s.env, fmt.Sprintf("%s=%s", name, vr.Str)) + if vr.Exported { + s.env = append(s.env, name+"="+vr.Str) + } } }