Zeilenumbrüche: LF und CRLF
Kurz: Windows beendet Zeilen mit zwei Zeichen (CR+LF), Linux und macOS mit einem (LF). Der Unterschied sorgt immer wieder für Ärger in Skripten und Git.
Genauer: CR („Carriage Return”, Wagenrücklauf) und LF („Line Feed”, Zeilenvorschub) stammen von Schreibmaschinen und Fernschreibern. Windows übernahm beide, Unix nur LF.
Im Detail
- Symptome: Ein Shell-Skript mit CRLF bricht mit
bad interpreter: /bin/bash^Mab. Dateien wirken in alten Editoren einzeilig oder zeigen^M. - Git:
core.autocrlfwandelt beim Einchecken und Auschecken um. Zuverlässiger ist eine.gitattributes-Datei mit* text=autound*.sh text eol=lf. - Umwandeln:
dos2unixundunix2dos, in Editoren die Einstellung „Zeilenende”. - Protokolle: HTTP, SMTP und viele Textprotokolle verlangen CRLF, auch auf Linux.
- Alte Macs: Früher nur CR, heute nicht mehr üblich.
- Hinweis: Im Python-Textmodus werden Zeilenenden beim Lesen vereinheitlicht (
\n).
Siehe auch: git rebase