The XDG Base Directory Specification is based on the following concepts:
            There is a single base directory relative to which user-specific
            data files should be written. This directory is defined by the
            environment variable $XDG_DATA_HOME.
          
            There is a single base directory relative to which user-specific
            configuration files should be written. This directory is defined by the
            environment variable $XDG_CONFIG_HOME.
          
            There is a set of preference ordered base directories relative to
            which data files should be searched.  This set of directories is defined
            by the environment variable $XDG_DATA_DIRS.
          
            There is a set of preference ordered base directories relative to
            which configuration files should be searched.
            This set of directories is defined
            by the environment variable $XDG_CONFIG_DIRS.
          
            There is a single base directory relative to which user-specific
            non-essential (cached) data should be written.
            This directory is defined by the
            environment variable $XDG_CACHE_HOME.
          
            There is a single base directory relative to which
            user-specific runtime files and other file objects should
            be placed.  This directory is defined by the environment
            variable $XDG_RUNTIME_DIR.
          
All paths set in these environment variables must be absolute. If an implementation encounters a relative path in any of these variables it should consider the path invalid and ignore it.