def run_hook(hook_name, *args)
      list = self.class.all_hooks(hook_name)
      shell = self
      list.each do |hook|
        result = hook.call(shell, *args)
        return :break if result == :break
      end
      list.any?
    end
def run_hook(hook_name, *args)
      list = self.class.all_hooks(hook_name)
      shell = self
      list.each do |hook|
        result = hook.call(shell, *args)
        return :break if result == :break
      end
      list.any?
    end
Runs a hook in the current shell instance.

 The hook method is passed the shell as the first argument then the arguments passed to this method.

 Return false unless the hook was executed.  Returns :break if one of the hook methods returns :break.