# Konfigurationsdatei

Eine Konfigurationsdatei ist eine Datei auf einem Computer, in der bestimmte Einstellungen (die Konfiguration) von Computerprogrammen oder Hardwarebestandteilen gespeichert sind.
Weit verbreitet ist die Verwendung einfacher Textdateien in der auf dem jeweiligen Betriebssystem üblichen Kodierung, etwa ASCII oder UTF-8, sodass sie mit verschiedensten Programmen, z. B. einem beliebigen Texteditor oder auf der Kommandozeile, bearbeitet werden können.
Konfigurationsdateien können u. a. auch binär, komprimiert oder verschlüsselt sein. Auch gibt es Programme, die ihre Konfigurationsdateien komplett selbst verwalten. Der Benutzer muss bzw. kann sich in solchen Fällen nicht direkt mit der entsprechenden Konfigurationsdatei auseinandersetzen.

## Dateiformate

Grundsätzlich ist kein spezielles Dateiformat vorgegeben – jedes Programm bzw. die Entwickler eines Computerprogramms legen selbst fest, wie Einstellungen gespeichert werden. Eine sehr einfache Art, Konfigurationsoptionen zu speichern, ist, sie als Variablen in binärer Form als Daten in eine Datei mit vorgegebenem Namen (und absolutem oder relativem Pfad) zu schreiben. Diese Daten sind jedoch nur schwer außerhalb des Programms interpretierbar. Damit also eine Konfigurationsdatei auch außerhalb des Programms gelesen und verändert werden kann, nutzen viele Programme Textdateien als Konfigurationsdateien, die einer bestimmten Syntax folgen, mit dem Nachteil, dass das Programm die Daten beim Einlesen interpretieren (englisch parse) muss, um sie in ihre binäre Form zurückzuführen.
Es gibt einige standardisierte Dateiformate, die für Konfigurationsdateien gerne verwendet werden. Das liegt nicht zuletzt daran, dass es zahlreiche Programmbibliotheken zum Einlesen solcher Dateiformate gibt. Zu den verbreitetsten Dateiformaten gehören:
* INI (Initialisierungsdatei)
* XML (Extensible Markup Language)
* JSON (JavaScript Object Notation)
* YAML (YAML Ain’t Markup Language)
* TOML (Tom’s Obvious, Minimal Language)
* .properties (Java-Properties-Datei)
* Property List

### Verbreitung je nach Betriebssystem

Grundsätzlich ist das verwendete Dateiformat nicht vom Betriebssystem abhängig, aber oft verwenden Anwendungen die gleichen Formate wie das Betriebssystem, auf dem sie laufen.

#### Windows

Unter Windows wurden häufig die Initialisierungsdateien (*.ini) eingesetzt. Auch die Registrierungsdatenbank (englisch Registry) user.dat eines Windows-Systems ist eine Konfigurationsdatei. Diese Datei liegt aber in einem binären Format vor, weshalb es spezieller Anwendungen und Dienste bedarf, um sie öffnen und bearbeiten zu können.

#### Unix

Unix und Unix-artige Betriebssysteme – beispielsweise BSD, Linux oder macOS – benutzen sehr viele verschiedene Formate, wobei darauf geachtet wird, dass es sich um einfach editierbare Textdateien handelt. Allerdings ist es dem jeweiligen Programm überlassen, wie es seine Konfiguration speichert, sodass prinzipiell auch binäre Formate möglich sind, wenn auch absolut Unix-unüblich.
Unter Linux legen Anwendungen meist selbständig ihre eigenen Konfigurationsdateien global im Verzeichnis /etc ab, die für alle Benutzer gelten und meist bei der Installation von Anwendungen, vom Installationsprogramm oder von der Paketverwaltung, oder durch einen Systemadministrator (root) erstellt werden, bzw. im Benutzerverzeichnis (meist /home/benutzername/). Obwohl Dateien unter Unix oftmals keine Dateiendung haben, besitzen Konfigurationsdateien manchmal Kürzel/Dateiendungen wie *.cnf, *.conf oder *.cfg, und beginnen im Benutzerverzeichnis fast immer mit einem führenden Punkt im Dateinamen, wodurch die Dateien als versteckt angesehen und standardmäßig bei der Ausgabe des Verzeichnisinhaltes nicht angezeigt werden. Auf modernen Linux-Systemen schreibt der Freedesktop.org-Standard ein eigenes Verzeichnis für alle Konfigurationsdateien vor, das per Umgebungsvariable $XDG_CONFIG_HOME definiert ist, normalerweise ~/.config/. So ist etwa die Benutzer-Konfiguration des Midnight Commander statt früher im Verzeichnis ~/.mc nun unter ~/.config/mc zu finden.
Apple formatiert Einstellungen in macOS mit der unter NeXTStep/OPENSTEP eingeführten Property List, mit dem Dateikürzel *.plist. Benutzerspezifische Konfigurationsdateien von Anwendungen sind normalerweise in /Users/benutzername/Library/Preferences abgelegt; globale Einstellungen, sowohl von macOS als auch von installierten Applikationen, die für alle Benutzer gelten sollen, werden in /Library/Preferences abgelegt. Einstellungen des BSD-Unix-Systems sind in üblicher Weise (als Textdateien) im /etc-Verzeichnis gespeichert.