Мы регулярно ломаем окончания строк в файлах, и все перестает работать, и мы этого не замечаем.
Bash жалуется на «недопустимый параметр» или «: команда не найдена», как описано здесь: http://thinkinginsoftware.blogspot.ca/2012/11/linux-server-cries-for-linux-desktop.html
Я обеспокоен тем, что это может сломать и другие текстовые файлы (conf, crons ...)
Мы - группа людей, использующих Windows, Mac или Linux для редактирования файлов Linux на одном сервере. Мы редактируем эти файлы вручную (ssh + vi / nano или localy + ftp). Иногда мы копируем / вставляем, и я думаю, что это причина проблемы. Да, иногда мы не тестируем наши изменения по не очень веским причинам: тот же скрипт работает на реплицирующем сервере, изменение просто отступает от некоторых строк и т. Д. Я согласен с этим.
Использование решений типа Chef / Puppet не планируется.
Копирование и вставка TL; DR не является проблемой, в отличие от FTP.
Я провел некоторое тестирование с копированием / вставкой окончаний строк Windows CRLF в Windows + Notepad ++ + PuTTY + nano и vi. Похоже, что символ CR (^ M) отфильтрован, в файлы вставляется только LF. Спасибо за то, что заставили меня усомниться в теории копирования / вставки!
Я передал файл с окончанием CRLF через FTP с помощью FileZilla, параметр «Режим отправки» стал автоматическим. CRLF сохраняются. Интересно, сможет ли FileZilla преобразовать их в LF.
Мы не можем запретить операционные системы, отличные от Linux, или запретить копирование.
Я подумал об этих решениях:
Плюсы №2 и №3: мы также можем использовать их, чтобы добавить последнюю пустую строку для программ, которые в ней нуждаются.
Использование bash, версия 4.2.37 (1) -release
Редактировать: Я получил один голос против, не могли бы вы объяснить почему?
Иногда мне приходится иметь дело с этим с некоторыми устаревшими системами. Иногда файлы, хранящиеся в системе контроля версий организации (Borland Starteam) были установлены неправильные настройки перевода строки.
Но при работе в нескольких кросс-платформенных средах копирование / вставка не должно вызывать только эту проблему. Постарайтесь определить тенденции на основе следующих выводов и соответствующим образом разобраться с наиболее серьезными нарушителями.
Периодически ищите файлы с переводом строки DOS.
find /var/www -not -type d -exec file "{}" ";" | grep CRLF
Пример:
# find /ppro/bin -not -type d -exec file "{}" ";" | grep CRLF
/ppro/bin/compile/save/srcfix.c: ASCII C program text, with CRLF line terminators
/ppro/bin/compile/bldtag.c: ASCII Pascal program text, with CRLF line terminators
/ppro/bin/compile/bldtag.c.sav: ASCII Pascal program text, with CRLF line terminators
/ppro/bin/compile/dbcsum2.c: ASCII Pascal program text, with CRLF line terminators
/ppro/bin/hphw/print_sv.c: ASCII text, with CRLF line terminators
/ppro/bin/linuxhw/dhcpd.conf: ASCII text, with CRLF line terminators
/ppro/bin/linuxhw/dhcpd.conf.mult_subnet: ASCII text, with CRLF line terminators
затем СЖИГАТЬ их!!
Помните, что dos2unix
в некоторых системах будут изменять разрешения ...