code: func (e *localExec) Start(channel ssh.Channel) (*ExecResult, error) {
  	var err error
  
  	// parse the command to see if the user is trying to run scp
  	err = e.transformSecureCopy()
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  
  	// transforms the Command string into *exec.Cmd
  	e.Cmd, err = prepareCommand(e.Ctx)
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  
  	// hook up stdout/err the channel so the user can interact with the command
  	e.Cmd.Stderr = channel.Stderr()
  	e.Cmd.Stdout = channel
  	inputWriter, err := e.Cmd.StdinPipe()
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  
  	go func() {
  		// copy from the channel (client) into stdin of the process
  		io.Copy(inputWriter, channel)
  		inputWriter.Close()
  	}()
  
  	if err := e.Cmd.Start(); err != nil {
  		e.Ctx.Warningf("%v start failure err: %v", e, err)
  		execResult, err := collectLocalStatus(e.Cmd, trace.ConvertSystemError(err))
  
  		// emit the result of execution to the audit log
  		emitExecAuditEvent(e.Ctx, e.GetCommand(), execResult, err)
  
  		return execResult, trace.Wrap(err)
  	}
  	e.Ctx.Infof("[LOCAL EXEC] Started command: %q", e.Command)
  
  	return nil, nil
  }
docs: // Start launches the given command returns (nil, nil) if successful.
  // ExecResult is only used to communicate an error while launching.