def get_vars(script_path, ignore=IGNORE_DEFAULT):
    """
    Gets the values of environment variables defined in a shell script.
    Note: this method executes the script potentially many times.
    :param script_path: Path the a shell script
    :type script_path: str or unicode
    :param ignore: variable names to ignore.  By default we ignore variables
                    that env injects into the script's environment.
                    See IGNORE_DEFAULT.
    :type ignore: iterable
    :return: Key value pairs representing the environment variables defined
            in the script.
    :rtype: dict
    """

    # Iterate over every var independently:
    # This is slower than using env, but enables us to capture multiline variables
    return dict((var, get_var(script_path, var)) for var in list_vars(script_path))