    # File lib/chef/shef.rb, line 48
      def self.start
        setup_logger
        # FUGLY HACK: irb gives us no other choice.
        irb_help = [:help, :irb_help, IRB::ExtendCommandBundle::NO_OVERRIDE]
        IRB::ExtendCommandBundle.instance_variable_get(:@ALIASES).delete(irb_help)

        parse_opts

        # HACK: this duplicates the functions of IRB.start, but we have to do it
        # to get access to the main object before irb starts.
        ::IRB.setup(nil)

        irb = IRB::Irb.new

        init(irb.context.main)

        irb_conf[:IRB_RC].call(irb.context) if irb_conf[:IRB_RC]
        irb_conf[:MAIN_CONTEXT] = irb.context

        trap("SIGINT") do
          irb.signal_handle
        end

        catch(:IRB_EXIT) do
          irb.eval_input
        end
      end