env: bash \ r: Немає такого файлу чи каталогу


94

Я намагаюся встановити YouCompleteMe звідси .

Коли я виконую:

./install.sh --clang-completer

Я отримую цю помилку:

env: bash\r: No such file or directory

Я не знаю, що не так із змінними середовища. Ось мій баш-шлях:

which bash 
/bin/bash

Чи потрібно його міняти на /usr/bash? Якщо так, то як мені це зробити? Я спробував змінити ~/.bashrcфайл, але це не спрацювало.

Відповіді:


158

Повідомлення про помилку свідчить про те, що скрипт, який ви викликаєте, має вбудовані \rсимволи , що, в свою чергу, свідчить про те, що в ньому є закінчення рядків у стилі Windows\r\n замість \nочікуваних закінчень рядків bash.

Для швидкого виправлення можна видалити \rсимволи. наступним чином:

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

Примітка: $'...'рядок є ANSI-C рядок в лапках підтримується bash, kshі zsh. Він використовується для того, щоб \rрозгорнути до фактичного символу CR, перш ніж sedпобачити сценарій, оскільки не всі sedреалізації самі підтримують\r послідовність екрану.

а потім біжи

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

Однак \r\nголовне питання полягає в тому, чому у вас вийшли файли у стилі - швидше за все, це стосується і інших файлів.

Можливо, ви використовуєте Git у Windows , де типовою конфігурацією є перетворення \nрозривів рядків у стилі Unix на розриви рядків у стилі Windows \r\nпри перевірці файлів та повторному перетворенні на \nрозриви рядків лише при фіксації .

Хоча це має сенс для розробки в Windows, це заважає таким сценаріям встановлення .

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

git config --global core.autocrlf false

Потім знову запустіть команди встановлення за участю git clone.

Щоб відновити поведінку Git пізніше, запустіть git config --global core.autocrlf true.




13

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


1
Ви можете використати:find . -type f -exec dos2unix {} \;
s.ouchene


4

У моєму випадку у мене була неправильна конфігурація 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


ти врятував мій день. Я боровся з цим випуском рядка протягом 2 днів.
Тахмідур Рахман

3

Як зазначається у вищезазначених коментарях, це відбувається через закінчення рядків 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

Працюючи нарешті. Я стикався з цією проблемою протягом 2 днів, і саме з-за закінчення рядка Windows з проекту я клонував з github, і, нарешті, ваше рішення було ідеальним рішенням. Дякую.
Рідді

1
Я радий, що це вам допомогло :)
salvi shahzad

нарешті, спрацював ідеально. велике спасибі
Мухаммед Ашфак

2

У моєму випадку у мене була неправильна конфігурація 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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.