Linux

Linux 對 CRLF 換行有問題嗎?

  • August 21, 2021

我一直在和我的團隊爭論這個問題。在開發中,我們使用 Windows (CRLF),在伺服器上我們使用 Linux (LF)。

如果 Linux 看到帶有 CRLF 換行符的文件會有問題嗎?.gitattributesGit 應該通過文件處理這種情況嗎?

大多數情況下,當您將文件上傳到伺服器時,Linux 核心本身並不知道也不關心行尾。儘管正如muru 所說, CRLF 會搞砸一個shebang

但是,在 Linux 中有一個約定,文本文件中的所有行都以單個 LF 結尾。許多工具會讀取 CR 並將其視為任何其他正常字元(a、b、c、…)。這來自文本文件的 POSIX 定義

可能會導致某些語言出現問題,例如 shell 腳本(sh、bash、zsh、ksh、…)。如果幸運的話,腳本將因虛假的額外參數導致的語法錯誤而失敗。但是,在糟糕的情況下,這可能會滲透到文件和文件名的內容中。

對於僅設計為在 linux / unix 下執行的工具和語言來說,這主要是一個問題。許多獨立於平台的語言和工具會自動適應。因此,您不太可能在IDE或程式碼編輯器中看到問題。


因此,要嘗試與您的同事結束您的爭論,沒有 linux 沒有 CRLF 行結尾的問題。 但是,如果您將某些工具和語言留在其中,它們可能會窒息或做奇怪的事情。

如果您正在編寫要在 Linux / Unix 平台上執行的程式碼,那麼通常更容易配置 git 來去除任何 CR 字元,從而為您留下 LF 行結尾。

引用自:https://unix.stackexchange.com/questions/665427