bash: build/envsetup.sh: line 1: syntax error near unexpected token `$'{\r'' [duplicate]

На этот вопрос уже есть ответ здесь:

У меня есть сервер под управлением Ubuntu 18.04 LTS, я использовал его для размещения моих личных вещей, потокового мультимедиа, ботов и создания сборок android. Месяц назад я увидел некоторые ошибки при выполнении скрипта envsetup.sh, который подготавливает окружение для начала сборки. Ссылка на скрипт. Вот вывод:

miguel@mike-machine:/home/builds/sources/PixysOS$ . build/envsetup.sh 
bash: build/envsetup.sh: line 1: syntax error near unexpected token `$'{\r''
'ash: build/envsetup.sh: line 1: `function hmm() {

Я попробовал выполнить его на другой машине (Manjaro 18 KDE) и не имел проблем, там я временно собирал. Я думаю, что это проблема с bash, но я sudo apt-get install --reinstall bash, но я все равно получаю то же самое.

0
задан 7 January 2019 в 04:59

1 ответ

Это почти наверняка, потому что Вы сохранили сценарий с окончаниями строки DOS-style CRLF.

Напр. учитывая минимальный файл сценария

$ cat bad.sh
function hmm() {
cat <<EOF
Run "m help" for help with the build system itself.
EOF
}

это было сохранено с окончаниями строки DOS, как показано file команда

$ file bad.sh
bad.sh: ASCII text, with CRLF line terminators

затем

$ . ./bad.sh
bash: ./bad.sh: line 1: syntax error near unexpected token `$'{\r''
'ash: ./bad.sh: line 1: `function hmm() {

но

$ dos2unix bad.sh
dos2unix: converting file bad.sh to Unix format...
$ . ./bad.sh
$ hmm
Run "m help" for help with the build system itself.

Можно найти dos2unix пакет в Ubuntu universe репозиторий - иначе можно использовать sed удалить \r символы или vi set ff=unix например.

1
ответ дан 26 October 2019 в 15:20

Другие вопросы по тегам:

Похожие вопросы: