# File lib/automateit/shell_manager/portable.rb, line 124
  def cd(dir, opts={}, &block)
    if block
      log.enqueue(:info, PEXEC+(block ? "pushd" : "cd")+" "+dir)
      begin
        if writing? or File.directory?(dir)
          FileUtils.cd(dir, &block)
        else
          block.call(true)
        end
      rescue Exception => e
        raise e
      ensure
        log.dequeue(:info, PEXEC+"popd # => #{pwd}")
      end
    else
      FileUtils.cd(dir) if writing?
    end
    return dir
  end