Cookies für Statistik und Werbung
Wir setzen Cookies für Statistik und Werbung ein, beides geht an Google. Wenn du ablehnst, ändert sich für dich sichtbar nichts.Zur Datenschutzseite
INI
Abschnitte und Schlüssel-Wert-Paare. Das älteste Konfigurationsformat, das noch täglich benutzt wird.
INI
INI ist ein reines Textformat, das sich in jedem Editor öffnen lässt. Eingesetzt wird es für die Bearbeitung.
Die Endung lautet .ini, der volle Name INI Configuration. Beides sagt weniger aus als das, was die Datei halten kann — und davon handelt der Rest dieser Seite.
Es geht auf 1985 zurück.
Einem Format, das so lange lesbar geblieben ist, kann man etwas anvertrauen, das man in zehn Jahren wiederhaben will.
Sie ist vollständig veröffentlicht, das Format lässt sich also aus dem Dokument umsetzen statt durch Nachsehen. Deshalb taucht es in so vielen Programmen auf, und deshalb gehen Dateien von vor zwanzig Jahren heute noch auf. Veröffentlicht heißt allerdings nicht lizenzfrei: Wo ein Format einen Codec einpackt, ist die Patentfrage eine eigene, die der Standard nicht mitbeantwortet.
Es geht überall noch auf und wird von älteren Programmen noch geschrieben, aber es wird nichts Neues mehr darum herum gebaut. Wandle um, was du behalten willst, und wähle es nicht für etwas, das heute anfängt.
INI hat eine Kommentarsyntax — das ist der Unterschied zwischen einer Datei, die ein Mensch pflegt, und einer, die ein Programm schreibt. Beim Umwandeln in ein Format ohne Kommentare sind sie das Erste, was verschwindet, und gewarnt wird nicht.
Notepad und Visual Studio Code lesen es, und die meisten Programme derselben Art ebenfalls.
Wenn eine Datei nicht aufgeht, liegt es selten am Format — häufiger daran, dass das Programm älter ist als das Format. Die Umwandlung in etwas Älteres ist der verlässliche Weg daran vorbei, und dafür gibt es den Rest dieser Website.
Kein Browser liest es.
Das ist der häufigste Grund, es umzuwandeln: nicht dass das Format schlecht wäre, sondern dass die Stelle, an der die Datei erscheinen soll, es nicht lesen kann.
INI ist zum Öffnen und Ändern gedacht. Behalte die Datei in diesem Format, solange die Arbeit läuft, und exportiere daraus, wann immer eine fertige Fassung gebraucht wird.
INI stammt aus dem frühen Windows, wo es die Einstellungen des Systems und jeder Anwendung hielt. Standardisiert wurde es nie — kein Dokument definiert es, kein Gremium verwaltet es, und jedes Programm, das eine INI liest, implementiert seinen eigenen Dialekt.
Der Kern ist überall gleich: Abschnittsüberschriften in eckigen Klammern, darunter Zeilen mit Schlüssel gleich Wert. Alles darüber hinaus ist Glückssache. Ob ein Semikolon oder eine Raute einen Kommentar einleitet. Ob ein Wert in Anführungszeichen stehen darf und was mit den Zeichen passiert. Ob Schlüssel Groß- und Kleinschreibung unterscheiden. Ob ein Wert über eine zweite Zeile fortgesetzt werden kann. Ob Abschnitte verschachtelt sein können, was in den meisten Dialekten nicht geht. Zwei Programme, die dieselbe Datei lesen, können sich berechtigt widersprechen, und beide liegen richtig.
Schreibt man timeout=30, enthält die Datei die Zeichen 3 und 0. Ob daraus eine Zahl wird und ob sie Sekunden oder Millisekunden meint, entscheidet ausschließlich das lesende Programm. Dasselbe gilt für true, yes, on und 1 — alles gängige Schreibweisen für einen Wahrheitswert, keine davon vom Format festgelegt, und jede Bibliothek akzeptiert eine andere Auswahl.
Das ist der praktische Unterschied zu JSON, YAML oder TOML, die alle Typen kennen. Deshalb liegen INI-Konfigurationsdateien meist eine Dokumentation oder erklärende Kommentare bei, und deshalb ist es gefährlicher, als es aussieht, eine Konfigurationsdatei zwischen zwei Implementierungen desselben Programms zu verschieben.
Unter Windows, weiterhin, an vielen Stellen: desktop.ini für die Anzeige eines Ordners, Boot- und Treiberkonfiguration, und eine lange Reihe von Anwendungen, die nie einen Grund zur Änderung hatten. Spiele sind eine besonders ergiebige Quelle — eine große Zahl von PC-Spielen hält Grafik- und Eingabeeinstellungen in einer INI, weshalb Anleitungen zum Feintuning voller Anweisungen zum Bearbeiten sind.
Anderswo überlebt es in Werkzeugen, die älter sind als die heutigen Alternativen: PHPs php.ini, Gits Konfiguration, Pythons setup.cfg und Paketierwerkzeuge, systemd-Unit-Dateien und eine ganze Reihe kleiner Hilfsprogramme. Neue Projekte greifen eher zu TOML oder YAML, aber nichts in bestehenden Installationen wird deswegen umgeschrieben.
Jeder Texteditor genügt. Zwei Regeln verhindern die meisten Schäden: die Datei vor dem Ändern kopieren, und immer nur eine Sache auf einmal ändern — ein Programm, das wegen einer fehlerhaften Konfigurationsdatei nicht startet, verrät selten, welche Zeile es gestört hat.
Dann die Details, die tatsächlich Fehler verursachen. Als UTF-8 ohne Byte-Order-Mark speichern, denn die unsichtbaren Bytes am Dateianfang sprengen bei vielen Parsern die erste Abschnittsüberschrift. Keine Leerzeichen um das Gleichheitszeichen ergänzen, sofern nicht sicher ist, dass die lesende Software sie entfernt — manche tun es nicht, und der Wert wird zu einem führenden Leerzeichen plus Text. Und Anführungszeichen so lassen, wie sie sind: Stehen bestehende Werte unquotiert da, fügt das Hinzufügen von Anführungszeichen dem Wert womöglich zwei Zeichen hinzu, statt ihn abzugrenzen.
Offensichtlich zu sein. Wer die Datei nie gesehen hat, kann sie öffnen, die Einstellung fullscreen finden, false zu true ändern und liegt richtig. Das ist eine echte Eigenschaft, und sie ist der Grund, warum das Format alles überlebte, was es in den Neunzigerjahren ersetzen sollte.
Es scheitert außerdem sanft im flachen Fall: Ein unbekannter Schlüssel wird meist ignoriert statt einen Fehler auszulösen, sodass eine Konfigurationsdatei, die für eine neuere Programmversion geschrieben wurde, mit einer älteren meist noch funktioniert. Die Alternativen sind strenger, was der Korrektheit dient und für jemanden, der um Mitternacht die Einstellungen eines Spiels bearbeitet, weniger hilfreich ist.
Wenn die Konfiguration über flache Abschnitte aus Zeichenketten hinausgewachsen ist. Verschachtelte Struktur, Listen, Datumswerte, Zahlen, die auch Zahlen sein müssen, oder jeder Fall, in dem der Unterschied zwischen der Zeichenkette "false" und dem Wahrheitswert false eine Rolle spielt — all das ist der Punkt, an dem INI aufhört zu helfen und anfängt, Fehler zu verstecken.
TOML wurde genau als Antwort darauf entworfen: Es sieht aus wie INI, sodass niemand eine neue Form lernen muss, und es hat eine Spezifikation, echte Typen und definierte Verschachtelung. YAML ist das andere häufige Ziel und mächtiger, dafür deutlich leichter falsch zu machen. Steht eine Datei vor dem Wachsen, ist TOML der kleinere Schritt und der, der die Lesbarkeit bewahrt, die INI überhaupt erst wertvoll gemacht hat.
| Endung | .ini, .cfg, .conf |
|---|---|
| Medientyp | text/plain |
| Erstmals veröffentlicht | 1985 |