env: bash \ r: No existe tal archivo o directorio


93

Estoy intentando instalar YouCompleteMe desde aquí .

Cuando ejecuto:

./install.sh --clang-completer

Me sale este error:

env: bash\r: No such file or directory

No sé qué pasa con las variables de entorno. Aquí está mi ruta de bash:

which bash 
/bin/bash

¿Necesito cambiarlo a /usr/bash? Si es así, ¿cómo debo hacer eso? Intenté cambiar el ~/.bashrcarchivo, pero no funcionó.

Respuestas:


158

El mensaje de error sugiere que el script que está invocando tiene \rcaracteres incrustados , lo que a su vez sugiere que tiene finales de línea al estilo \r\nde Windows en lugar de los \nfinales de línea -only bashesperados.

Como solución rápida , puede eliminar los \rcaracteres. como sigue:

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

Nota: La $'...'cadena es un ANSI-C citada cadena apoyada en bash, ksh, y zsh. Se utiliza para garantizar que se \rexpanda a un carácter CR real antes de sedver el script, porque no todas las sedimplementaciones en sí mismas admiten \rcomo secuencia de escape.

y luego corre

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

Sin embargo, la pregunta más importante es por qué ha terminado con \r\narchivos de estilo; lo más probable es que otros archivos también se vean afectados.

Tal vez usted está funcionando con Git en Windows , donde una configuración típica es la de convertir al estilo Unix \nsaltos de línea -a sólo a estilo de Windows \r\nsaltos de línea en la comprobación de archivos fuera y volver a convertir a \nlos saltos de línea -sólo en la comisión .

Si bien esto tiene sentido para el desarrollo en Windows, se interpone en escenarios de instalación como estos.

Para hacer que Git extraiga archivos con terminaciones de archivo estilo Unix en Windows , al menos temporalmente, use:

git config --global core.autocrlf false

Luego ejecute sus comandos de instalación involucrando git clonenuevamente.

Para restaurar el comportamiento de Git más tarde, ejecute git config --global core.autocrlf true.



17

Su archivo tiene finales de línea de Windows. Cambie a finales de línea Unix.


13

Me encontré con algo similar. Puede utilizar dos2unix install.shpara convertir los finales de línea. Varios archivos a través defind [pattern] | xargs dos2unix


1
Puede utilizar:find . -type f -exec dos2unix {} \;
s.ouchene

13

Comando rápido para convertir el final de línea:

dos2unix thescript.sh

3

En mi caso, tenía una configuración de git incorrecta. La documentación de git dice:

Si está programando en Windows y trabaja con personas que no lo están (o viceversa), probablemente se encontrará con problemas de final de línea en algún momento

Estoy usando Mac OS y exactamente tengo este problema en uno de mis proyectos. Para solucionarlo me volví autocrlfhacia lo trueque estaba mal.

Puede verificar el autocrlfestado de su configuración de git de esta manera:

git config core.autocrlf

Entonces, si esto regresa truey el problema ocurre dentro de un repositorio de git, tendrá que cambiar esa configuración a

git config --global core.autocrlf input

en un sistema Mac / Unix. Solo para proyectos de Windows que puede usar

git config --global core.autocrlf false

En mi caso, eliminé el repositorio de git y lo cloné nuevamente y luego todo volvió a funcionar como se esperaba.

Obtenga más información en https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration


3

Como dicen los comentarios anteriores, está sucediendo debido a los finales de línea de Windows. Para solucionar el problema, siga estos pasos

Para Mac:

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

Para Linux:

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

Y asegúrese de que su configuración de git esté configurada de la siguiente manera:

git config --global core.autocrlf input

Trabajando finalmente. Estuve enfrentando este problema durante 2 días y fue el problema de los finales de línea de Windows del proyecto que cloné desde el github y finalmente su solución fue la solución perfecta. Gracias.
Riddhi

1
Me alegro de que te haya ayudado :)
salvi shahzad

finalmente funcionó perfectamente. muchas gracias
Muhammad Ashfaq

2

En mi caso, tenía una configuración de git incorrecta. La documentación de git dice:

Si está programando en Windows y trabaja con personas que no lo están (o viceversa), probablemente se encontrará con problemas de final de línea en algún momento

Estoy usando Mac OS y exactamente tengo este problema en uno de mis proyectos. Para resolverlo Sintonicé autocrlfa true.

Puede verificar el autocrlfestado de su configuración de git de esta manera:

git config core.autocrlf

Entonces, si esto regresa truey el problema ocurre dentro de un repositorio de git, tendrá que cambiar esa configuración a

git config --global core.autocrlf input

cuál es el correcto para sistemas Mac / Unix. Solo para proyectos de Windows que puede usar

git config --global core.autocrlf false

En mi caso, eliminé el repositorio de git y lo revisé nuevamente y luego todo funcionó nuevamente como se esperaba.

Obtenga más información en https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.