def push_buffer
      raise Shells::NotRunning unless running?
      # push the buffer so we can get the output of a command.
      debug 'Pushing buffer >>'
      sync do
        output_stack.push [ stdout, stderr, output ]
        self.stdout = ''
        self.stderr = ''
        self.output = ''
      end
    end
def push_buffer
      raise Shells::NotRunning unless running?
      # push the buffer so we can get the output of a command.
      debug 'Pushing buffer >>'
      sync do
        output_stack.push [ stdout, stderr, output ]
        self.stdout = ''
        self.stderr = ''
        self.output = ''
      end
    end
Pushes the buffers for output capture.

 This method is called internally in the +exec+ method, but there may be legitimate use
 cases outside of that method as well.