EMZETT.
Login

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^M ab. Dateien wirken in alten Editoren einzeilig oder zeigen ^M.
  • Git: core.autocrlf wandelt beim Einchecken und Auschecken um. Zuverlässiger ist eine .gitattributes-Datei mit * text=auto und *.sh text eol=lf.
  • Umwandeln: dos2unix und unix2dos, 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