env: bash\r: нет такого файла или каталога

Я пытаюсь установить YouCompleteMe отсюда.

Когда я выполню:

    ./install.sh --clang-completer

Я получаю эту ошибку:

    env: bash\r: No such file or directory

Я не знаю, что не так с переменными среды. Вот мой путь bash:

which bash 
/bin/bash

Нужно ли менять его на / usr / bash? Если да, то как мне это сделать? Я попытался изменить файл ~/.bashrc, но это не сработало.

12 ответов

Решение

Сообщение об ошибке говорит о том, что вызываемый скрипт имеет встроенный \r персонажи, что в свою очередь говорит о том, что он имеет стиль Windows \r\n окончания строки вместо \n конец строки bash надеется.

Как быстрое решение, вы можете удалить \r символы. следующее:

 sed $'s/\r$//' ./install.sh > ./install.Unix.sh

а потом беги

./install.Unix.sh --clang-completer

Тем не менее, большой вопрос, почему вы закончили с \r\n файлы в стиле - скорее всего, затронуты и другие файлы.

Возможно, вы используете Git в Windows, где типичная конфигурация - конвертировать Unix-стиль \n только разрывы строк в стиле Windows \r\n разрывы строк при проверке файлов и повторном преобразовании в \n только разрывы строк при совершении.

Хотя это имеет смысл для разработки под Windows, это мешает установочным сценариям, подобным этим.

Чтобы заставить Git извлекать файлы с окончаниями файлов в стиле Unix в Windows - хотя бы временно - используйте:

git config --global core.autocrlf false

Затем запустите ваши команды установки с участием git clone снова.

Чтобы восстановить поведение Git позже, запустите git config --global core.autocrlf true,

Как говорится в комментариях выше, это происходит из-за окончаний строк в Windows. Чтобы устранить проблему, выполните следующие действия.

Для MAC:

brew install dos2unix # Installs dos2unix Mac
find . -type f -exec dos2unix {} \; # recursively removes windows related stuff

Для Linux:

sudo apt-get install -y dos2unix # Installs dos2unix Linux
sudo find . -type f -exec dos2unix {} \; # recursively removes windows related stuff

И убедитесь, что ваша конфигурация git настроена следующим образом:

git config --global core.autocrlf input
>vim gradlew
:set fileformat=unix
:wq
>./gradlew clean build

Если вы используете MAC и используете VS Code, вы можете переключиться с CTRLк LFи снова сохраните файл. Это заменит все CRLF на LF.

Быстрая команда для преобразования окончания строки:

dos2unix thescript.sh

Ваш файл имеет окончания строки Windows. Измените на конец строки Unix.

Наткнулся на нечто подобное. Ты можешь использовать dos2unix install.sh конвертировать окончания строк. Несколько файлов через find [pattern] | xargs dos2unix

В моем случае у меня была неправильная конфигурация git. В документации git указано:

Если вы программируете в Windows и работаете с людьми, которые этого не делают (или наоборот), вы, вероятно, в какой-то момент столкнетесь с проблемами окончания строки

Я использую Mac OS и именно эта проблема у меня есть в одном из моих проектов. Чтобы решить это, я обратилсяautocrlf к true что было неправильно.

Вы можете проверить autocrlf состояние вашей конфигурации git следующим образом:

git config core.autocrlf

Итак, если это вернется true и проблема возникает в репозитории git, вам придется изменить эту конфигурацию на

git config --global core.autocrlf input

в системе Mac / Unix. Только для проектов Windows вы можете использовать

git config --global core.autocrlf false

В моем случае я удалил репозиторий git и снова клонировал его, и после этого все снова заработало, как ожидалось.

Узнайте больше на https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Раньше у меня была эта проблема, когда я пытался понизить флаттер

это решило мою проблему

      rm -rf flutter
git config --global core.autocrlf false
git clone git@github.com:flutter/flutter.git
flutter channel stable

В моем случае у меня была неправильная конфигурация git. В документации git указано:

Если вы программируете в Windows и работаете с людьми, которые этого не делают (или наоборот), вы, вероятно, в какой-то момент столкнетесь с проблемами окончания строки

Я использую Mac OS и именно эта проблема у меня есть в одном из моих проектов. Чтобы решить эту проблему, я настроилautocrlf к true.

Вы можете проверить autocrlf состояние вашей конфигурации git следующим образом:

git config core.autocrlf

Итак, если это вернется true и проблема возникает в репозитории git, вам придется изменить эту конфигурацию на

git config --global core.autocrlf input

что является правильным для систем Mac / Unix. Только для проектов Windows вы можете использовать

git config --global core.autocrlf false

В моем случае я удалил репозиторий git и снова проверил его, и после этого все снова заработало, как ожидалось.

Узнайте больше на https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

В моем случае: эта ошибка возникает, когда я скачал и разархивировал версию WINDOWS на MAC.

а затем добавил путь к версии Windows в .bash_profile или .zprofile

поэтому решение для меня заключалось в том, чтобы удалить пути из (.bash_profile и .zprofile), а затем загрузить версию для Mac, открыв терминал и набрав:

  1. mkdir src
  2. cd src
  3. git clone https://github.com/flutter/flutter.git -b стабильный
  4. экспорт PATH="$PATH: pwd/flutter / bin "
  5. трепещущий доктор

Эта ссылка помогла мне решить проблему. https://github.com/tiangolo/uwsgi-nginx-flask-docker/issues/127

Я отредактировал свой файл.sh, заменив все CRLF на LF

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