Zum Inhalt springen

Konfigurationsdatei

aus Wikipedia, der freien Enzyklopädie
Konfigurationsdatei für GNU GRUB

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.

Grundsätzlich ist kein spezielles Dateiformat vorgegeben. Jedes Programm bzw. die Entwickler eines Computerprogramms legen selbst fest, wie Einstellungen gespeichert werden. Die Daten werden beim Einlesen von einem Parser interpretiert.

Schlüssel-Wert-Paare

[Bearbeiten | Quelltext bearbeiten]

Besonders häufig sind Dateiformate aus reinem Text die dem Muster Schlüssel=Wert↩ folgen. Sie haben keinen offiziellen Namen and werden meist einfach „Konfigurationsdatei“ genannt. Diese Formate folgen auf Grund ihrer Einfachheit meist keiner Norm, sondern altem Brauch. Sie haben keinen eigenen MIME-Typ, sondern verwenden text/plain.[1] Sie sind auf fast allen Betriebssystemen als genutzte Datenformate des Systems oder der Anwendungen anzutreffen.[2] Es wird auch oft für andere Zwecke verwendet. So nutzt beispielsweise das Videospiel Luanti es für Übersetzungen.[3]

Es gibt mögliche Unterschiede in der Implementierung. So kann manchmal ein Zeilenumbruch am Ende der Datei erforderlich sein, da sonst der letzte Eintrag nicht ausgewertet wird. Diese Anforderung ist eher unerwünscht und führt häufig zu Problemen.[4] Manche Parser können Probleme mit = im Wert haben, wenn sie eine Funktion verwenden, die die Zeile an allen Stellen mit = auseinanderbricht (beispielsweise .split("=") in JavaScript), statt alles nach dem ersten = als Wert zu behandeln. Ein BOM führt in den meisten einfachen Parsern zu Problemen, da er als Teil des ersten Schlüssels gelesen wird.

Benennung: Windows und Programme, die zuerst dafür geschrieben wurden, verwenden meist die Dateiendung .ini (kurz für Initialisierungsdatei).[5] Auf anderen Systemen wird entweder gar keine Endung oder .conf verwendet. Manche Cloud- und Virtualisierungssoftware wie Docker verwendet .env[6]. Die Windows-Registrierungsdatenbank verwendet zum Import und Export von Einträgen .reg.[7] Früher waren auch .inf, .cfg, .cnf, .ctl, .par gebräuchlich. Viele Systeme benutzen einen führenden Punkt um Dateien im Dateimanager zu verstecken, wo sie sich mit Nutzerdateien ein Verzeichnis teilen. z. B. Konfigurationsdateien und -ordner im Nutzerverzeichnis oder Gitkonfigurationen in einem Softwareprojekt. Dieser ist auch auf Windows bei Cross-Plattform-Anwendungen wie Minecraft oder Git anzutreffen.[8][9]

Es gibt Normungsversuche für Erweiterungen wie TOML und in Java die Java-Properties-Datei, die von manchen Programmen eingesetzt werden. Die meisten Programme folgen aber dem weniger vielschichtigem Grundmuster.

Die Erweiterung durch den [Abschnitt]↩ Syntax ist ebenfalls häufig. Sie werden Abschnitt[10] oder Gruppe[11] genannt. Dabei fasst [Gruppe]↩ alle Einträge darunter bis zur nächsten Gruppe oder dem Dateiende zu einer Gruppe mit, in diesem Fall, dem Namen „Gruppe“ zusammen.

Eine andere häufige Erweiterung sind Kommentare, die durch ein Zeichen am Zeilenanfang eingeleitet werden. Windows-INI-Parser übernahmen ; aus der Tradition von Konfigurationsdateien von MS-DOS[12] und davor Anwendungen auf CP/M, die manchmal in Assemblersprache[13] konfiguriert wurden.[14] Systeme mit Unix-Shell übernahmen # von sh. Moderne Bibliotheken unterstützen gewöhnlich beide.[15][16] Einfache Parser meist gar keine.

Genormte Formate

[Bearbeiten | Quelltext bearbeiten]

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:

Während Schlüssel-Wert-Paare in einfacheren Konfigurationssystemen beliebt bleiben, übernehmen genormte Formate den Anwendungsbereich von tief verschachtelten Konfigurationsdateien. Früher war XML dafür beliebt, aber heute wird in neuen Projekte hauptsächlich auf JSON gesetzt. JSON ist schneller, sicherer[17], weniger komplex, braucht weniger Bytes für denselben Inhalt und ist mit seinen vordefinierten Datentypen leichter zu verwenden.[18][19][20]

Free/Libre Open Source Software verwendet häufiger reine Textdateien zur Konfiguration als Proprietäre Software.

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.

Die Desktop-Umgebung Gnome verwendet dconf, welches wie die Windows-Registry eine binäre Datenbank verwendet. Es löste GConf ab, welches eine Verzeichnisstruktur voller XML-Dateien verwendete.[21]

Qt und KDE Plasma verwenden QSettings. Eine Abstraktionsschicht, die Konfigurationen je nach Plattform in verschiedene Formate und Datenbanken an unterschiedlichen Orten speichert.[22]

Unter Linux und BSD 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/).

Die „Freedesktop XDG Base Directory Specification“ besagt, dass Konfigurationsdateien die direkt im Home-Verzeichnis liegen, heute nicht mehr zeitgemäß sind. Die Spezifikation schreibt ein eigenes Verzeichnis für alle Konfigurationsdateien vor, das per Umgebungsvariable $XDG_CONFIG_HOME definiert ist, normalerweise ~/.config/.[23] So ist etwa die Benutzer-Konfiguration des Midnight Commander statt früher unter dem Pfad ~/.mc nun in ~/.config/mc zu finden. BSD und OSX folgen dieser Spezifikation nicht.

Apple formatiert Einstellungen in macOS mit der unter NeXTStep/OPENSTEP eingeführten Property List, mit dem Dateikürzel *.plist.[24] Benutzerspezifische Konfigurationsdateien von Anwendungen sind normalerweise in /Users/benutzername/Library/Preferences[24] 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.[24]

Die Windows-Registrierungsdatenbank (englisch Registry) user.dat 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.

Unter Windows 9x legten Programme ihre Konfigurationsdateien meist direkt im eigenen Installationsordner ab, weil es weder Benutzertrennung noch Zugriffsrechte gab. Mit Windows 2000 wollte Microsoft dieses Modell ablösen. Programme sollten nicht mehr in Program Files schreiben, sondern benutzerspezifische Daten in %APPDATA% bzw. %LOCALAPPDATA% und systemweite Einstellungen bevorzugt in der Registrierungsdatenbank speichern. XP bot die neue Struktur an, erzwang sie aber nicht, weil die meisten Nutzer Administratoren waren und viele Programme weiterhin wie unter Win9x arbeiteten.

Mit Windows Vista wurde diese Trennung technisch durchgesetzt: Schreibzugriffe in Program Files sind für normale Benutzer blockiert, und inkompatible Altprogramme werden über die UAC‑Virtualisierung nach %LOCALAPPDATA%\VirtualStore umgeleitet.[25] Gleichzeitig ersetzte Microsoft den alten „All Users\Application Data“-Pfad durch den neuen Ordner C:\ProgramData, der als zentraler, systemweiter Speicherort für gemeinsam genutzte Anwendungsdaten dient und damit die Struktur aus Benutzerprofil, Program Files und Registry klar ergänzt.[26][27]

Unter Windows XP waren alle genannten Pfade vollständig lokalisiert, weil XP die Ordner physisch in der jeweiligen Sprache angelegt hat. Aus „Documents and Settings“ wurde „Dokumente und Einstellungen“, aus „Application Data“ wurde „Anwendungsdaten“, und auch „Program Files“ erschien als „Programme“.[28] Erst ab Windows Vista wurden die physischen Ordnernamen vereinheitlicht und nicht mehr übersetzt. Vista zeigte zwar weiterhin lokalisierte Anzeigenamen im Windows-Explorer, aber die tatsächlichen Pfade blieben englisch (z. B. C:\ProgramData, C:\Users, C:\Program Files).

Abkürzungen des Dateipfads durch einen %Namen% in Prozentzeichen nennt man Umgebungsvariable.

Anwendungen, die ihre Einstellungen in ihrem eigenen Programmordner ablegen, bieten den Vorteil, dass sie leichter auf einen anderen Rechner übertragbar sind oder direkt auf entfernbaren Speichermedien wie USB-Sticks an verschiedenen Rechnern genutzt werden können. Solche Anwendungen werden im Windows-Umfeld manchmal als portabel bezeichnet.[29][30]

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. What's the content type of a .ini file? Abgerufen am 17. Juni 2026 (englisch).
  2. configparser — Configuration file parser. Abgerufen am 17. Juni 2026 (englisch).
  3. Translations - Luanti API Documentation. Abgerufen am 17. Juni 2026 (englisch).
  4. Oliver Tappin: Why You Should Always End Files With a Newline (EOF Line). In: Github. Abgerufen am 17. Juni 2026 (englisch).
  5. donno2048: Win95-source/MOUSE.INI at master · donno2048/Win95-source. Abgerufen am 17. Juni 2026 (englisch).
  6. Docker ARG, ENV and .env - a Complete Guide. 13. Juli 2017, abgerufen am 17. Juni 2026 (englisch).
  7. Shakeel Faiz: REG File Format - Windows Registry File. 7. März 2023, abgerufen am 17. Juni 2026 (englisch).
  8. Git - gitignore Documentation. Abgerufen am 17. Juni 2026.
  9. How to Access Your .Minecraft Folder on the Computer: 10 Steps. Abgerufen am 17. Juni 2026 (englisch).
  10. Making sure you're not a bot! Abgerufen am 17. Juni 2026.
  11. Reading (General) section in ini-files. 12. Mai 2021, abgerufen am 17. Juni 2026.
  12. List of DOS CONFIG.SYS commands. Abgerufen am 18. Juni 2026.
  13. TylerMSFT: Assembly-Language Comments. Abgerufen am 18. Juni 2026 (amerikanisches Englisch).
  14. 262588213843476: CP/M Xmodem V2.9 by Martin Eberhard - Modified for CP/M-IDE. Abgerufen am 18. Juni 2026 (englisch).
  15. configparser — Configuration file parser. Abgerufen am 17. Juni 2026 (englisch).
  16. std/parsecfg. In: Nim Programmiersprache. Abgerufen am 17. Juni 2026 (englisch).
  17. JSON versus XML - Unterschied zwischen Datendarstellungen - AWS. Abgerufen am 17. Juni 2026 (deutsch).
  18. Zuplo: JSON Vs. XML for Web APIs: The Format Showdown. 30. April 2025, abgerufen am 17. Juni 2026 (englisch).
  19. JSON versus XML - Unterschied zwischen Datendarstellungen - AWS. Abgerufen am 17. Juni 2026 (deutsch).
  20. JSON vs. XML: 2026 Market Share & Usage Comparison. 17. Juni 2026, abgerufen am 17. Juni 2026 (englisch).
  21. Initiatives/GnomeGoals/GSettingsMigration – GNOME Wiki Archive. Abgerufen am 17. Juni 2026.
  22. QSettings Class | Qt Core | Qt 6.11.1. Abgerufen am 17. Juni 2026.
  23. XDG Base Directory Specification. Environment variables. In: freedesktop.org. 24. November 2010, abgerufen am 3. August 2020 (englisch).
  24. 1 2 3 Comparing the Mac OS X Property List to the Windows Registry (Memento des Originals vom 12. Mai 2014 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. (englisch), www.macforensicslab.com, zugegriffen: 30. Juli 2011
  25. Please explain VirtualStore for non-experts - Microsoft Q&A. Abgerufen am 24. Juni 2026 (en-ie).
  26. jwmsft: Known Folders - Win32 apps. Abgerufen am 24. Juni 2026 (amerikanisches Englisch).
  27. jwmsft: KNOWNFOLDERID (Knownfolders.h) - Win32 apps. Abgerufen am 24. Juni 2026 (amerikanisches Englisch).
  28. The 'Program Files' folder in different languages (Technical Article). Abgerufen am 24. Juni 2026.
  29. PortableApps.com Platform Features | PortableApps.com. Abgerufen am 24. Juni 2026 (englisch).
  30. Firefox Portable Download. In: Chip. Abgerufen am 24. Juni 2026.