# 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