#bash #docker #unix #line-endings
#bash #docker #unix #окончания строк
Вопрос:
Моя команда создает наше первое .NET-приложение на базе docker и написала скрипт bash, который запускается как часть процесса сборки (из файла dockerfile). Мы все на компьютерах с Windows 10.
При запуске скрипта bash он выдает ошибку : /bin/bash^M: bad interpreter: No such file or directory
.
Судя по моим исследованиям, это связано с тем, что окончания строк являются окончаниями строк Windows, а не на основе UNIX. Я смог исправить это, преобразовав окончания с помощью Notepad , и скрипт работал нормально. Однако, когда я зашел в SourceTree, чтобы просмотреть измененные файлы, он кратко отображался как измененный файл (с чем-то, говорящим, что он не может обнаружить изменения). Как только я нажал кнопку stage file, она исчезла, как будто не было никаких измененных файлов.
Как мне решить эту проблему? Я вижу настройку окончаний строк в GIT, но не уверен, какой должна быть правильная настройка.
Ответ №1:
Использование dos2unix поможет вам решить эту проблему. Что делает dos2unix, так это удаляет скрытые символы Windows, с которыми вы сталкиваетесь (^M).
Текстовые редакторы на базе Windows помещают специальные символы в конце строк для обозначения возврата строки или перевода строки. Обычно безвредные, некоторые приложения на сервере Linux не могут понять эти символы и могут привести к неправильному ответу службы.
Если на вашем компьютере с Linux еще нет dos2unix:
Установите dos2unix
apt install dos2unix
Запустите dos2unix для вашего проблемного файла
dos2unix your_problematic_file.txt
Комментарии:
1. Спасибо, но моя проблема на самом деле не в преобразовании окончаний строк. Я знаю, как это сделать. Моя проблема в том, что мы разрабатываем на компьютерах с Windows, поэтому я преобразовал окончания, но GIT не распознает файл, который был изменен, чтобы я мог проверить его, чтобы другие разработчики могли его забрать.
Ответ №2:
Вероятно, вы ищете .gitattributes
файл.
Это позволяет вам устанавливать, в каких файлах вы хотите, какие окончания строк.
Подробнее читайте здесь: Документация
Ответ №3:
Добавьте .gitattributes
файл в начало вашего репозитория со следующим содержимым.
* text=auto
*.sh text eol=lf
*.conf text eol=lf