Normally the OGR Shapefile driver treats a whole directory of shapefiles as a dataset, and a single shapefile within that directory as a layer. In this case the directory name should be used as the dataset name. However, it is also possible to use one of the files (.shp, .shx or .dbf) in a shapefile set as the dataset name, and then it will be treated as a dataset with one layer.
Currently the shapefile driver always returns polygons, rather than multipolygons, even for polygons with multiple outer rings. This is a violation of the OGR (and Simple Features) data model, and will be corrected at some point in the future. The new ESRI measure values are discarded if encountered.
If a .prj files in old Arc/Info style or new ESRI OGC WKT style is present, it will be read and used to associate a projection with features.
As a special case attempts to create a new dataset with the extension .shp will result in a single file set being created instead of a directory.
ESRI shapefiles can only store one kind of geometry per layer (shapefile). On creation this is may be set based on the source file (if a uniform geometry type is known from the source driver), or it may be set directly by the user with the layer creation option SHPT (shown below). If not set the layer creation will fail. If geometries of incompatible types are written to the layer, the output will be terminated with an error.
Note that this can make it very difficult to translate a mixed geometry layer from another format into Shapefile format using ogr2ogr, since ogr2ogr has no support for separating out geometries from a source layer.
Shapefile feature attributes are stored in an associated .dbf file, and so attributes suffer a number of limitations: