У нас есть 10 ПК с некоторой версией Ubuntu и только удаленный доступ. Выполняя некоторые обновления пользовательского программного обеспечения, я не заметил, что окончания строк в некоторых сценариях были версией Windows (CR + LF), а не версией Unix (LF). Итак, теперь, когда я хочу запустить скрипт, он выдает ошибку:
bash: /usr/local/bin/portsee: /usr/bin/python^M: bad interpreter: No such file or directory
Есть ли способ изменить все окончания строк в скрипте из терминала? Дело в том, что я не могу установить какое-либо новое программное обеспечение на эту группу ПК.
То sed решение не является переносимым на все платформы. Это не сработало для меня на macOS, если я этого не сделал brew install gsed и использовала gsed 's/\r$//'.
Для решения, которое работает в большинстве мест без установки чего-либо, я использую
tr -d '\r'
Чтобы отредактировать файл на месте, я создаю новые данные в подоболочке перед удалением и перезаписью исходного файла: