Hallo Sven,
Um das jetzt ein für alle Male zu klären:
1. man 7 glob sagt unter Linux:
* ! ist das Negationszeichen für "Ranges"
Also ist [!0-9] == Irgend ein Zeichen, das NICHT 0-9 ist.
* Für [^...] wird das Verhalten nicht definiert in POSIX, sprich:
Jeder darf machen, was er will.
2. Der Apache verwendet eine eigene fnmatch-Implementierung in der Apache Portable Runtime Bibliothek (APR).
3. Im APR-Sourcecode steht:
/*
* A bracket expression starting with an unquoted circumflex
* character produces unspecified results (IEEE 1003.2-1992,
* 3.13.2). This implementation treats it like '!', for
* consistency with the regular expression syntax.
* J.T. Conklin (conklin@ngai.kaleida.com)
*/
Also: APR entscheidet sich, fnmatch so zu implementieren, dass [^...] genauso behandelt wird, wie [!...].
Ergo: Die Apache-Doku stimmt, die Konfiguration genauso, die Doku zu glob(7) ebenfalls. Nur der Fakt, dass APR sich entscheidet, den offen gelassenen Punkt bei POSIX so zu interpretieren, führt zu leichten Verwirrungen.
Viele Grüße,
Christian