    # File lib/chef/knife/exec.rb, line 40
      def run
        config[:script_path] ||= Array(Chef::Config[:script_path])

        # Default script paths are chef-repo/.chef/scripts and ~/.chef/scripts
        config[:script_path] << File.join(Chef::Knife.chef_config_dir, 'scripts') if Chef::Knife.chef_config_dir
        config[:script_path] << File.join(ENV['HOME'], '.chef', 'scripts') if ENV['HOME']

        scripts = Array(name_args)
        context = Object.new
        Shef::Extensions.extend_context_object(context)
        if config[:exec]
          context.instance_eval(config[:exec], "-E Argument", 0)
        elsif !scripts.empty?
          scripts.each do |script|
            file = find_script(script)
            context.instance_eval(IO.read(file), file, 0)
          end
        else
          script = STDIN.read
          context.instance_eval(script, "STDIN", 0)
        end
      end