env: bash \ r: aucun fichier ou répertoire de ce type

94

J'essaye d'installer YouCompleteMe à partir d' ici .

Quand j'exécute:

./install.sh --clang-completer

J'obtiens cette erreur:

env: bash\r: No such file or directory

Je ne sais pas ce qui ne va pas avec les variables d'environnement. Voici mon chemin de bash:

which bash 
/bin/bash

Dois-je le changer en /usr/bash? Si oui, comment dois-je faire cela? J'ai essayé de changer de ~/.bashrcfichier, mais cela n'a pas fonctionné.

Brijesh Rakholia
la source

Réponses:

158

Le message d'erreur suggère que le script que vous appelez a des \rcaractères incorporés , ce qui suggère à son tour qu'il a des fins de ligne de style Windows\r\n au lieu des \nfins de ligne attendues bash.

En guise de solution rapide , vous pouvez supprimer les \rcaractères. comme suit:

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

Remarque: La $'...'chaîne est une chaîne entre guillemets ANSI-C pris en charge bash, kshet zsh. Il est utilisé pour s'assurer que le se \rdéveloppe en un caractère CR réel avant de sedvoir le script, car toutes les sedimplémentations ne prennent pas en charge en \rtant que séquence d'échappement.

puis exécutez

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

Cependant, la plus grande question est de savoir pourquoi vous vous êtes retrouvé avec \r\ndes fichiers -style - très probablement, d'autres fichiers sont également affectés.

Peut-être que vous exécutez Git sur Windows , où une configuration typique consiste à convertir les \nsauts de ligne de style Unix en sauts de \r\nligne de style Windows lors de l' extraction de fichiers et de les reconvertir en \nsauts de ligne uniquement lors de la validation .

Bien que cela ait du sens pour le développement sous Windows, cela gêne les scénarios d' installation comme ceux-ci.

Pour que Git extrait des fichiers avec des fins de fichier de style Unix sous Windows - au moins temporairement - utilisez:

git config --global core.autocrlf false

Ensuite, exécutez à nouveau vos commandes d'installation git clone.

Pour restaurer le comportement de Git plus tard, exécutez git config --global core.autocrlf true.

mklement0
la source
28
>vim gradlew
:set fileformat=unix
:wq
>./gradlew clean build
Tuan Nguyen
la source
17

Votre fichier a des fins de ligne Windows. Passez aux fins de ligne Unix.

Carl Norum
la source
13

Ran dans quelque chose de similaire. Vous pouvez utiliser dos2unix install.shpour convertir les fins de ligne. Plusieurs fichiers viafind [pattern] | xargs dos2unix

Michael Harris
la source
1
Vous pouvez utiliser:find . -type f -exec dos2unix {} \;
s.ouchene
13

Commande rapide pour convertir la fin de ligne:

dos2unix thescript.sh
igonejack
la source
4

Dans mon cas, j'avais une mauvaise configuration git. La documentation de git déclare:

Si vous programmez sous Windows et travaillez avec des personnes qui ne le sont pas (ou vice-versa), vous rencontrerez probablement des problèmes de fin de ligne à un moment donné

J'utilise Mac OS et j'ai exactement ce problème dans l'un de mes projets. Pour le résoudre, je me suis tourné autocrlfvers truece qui n'allait pas.

Vous pouvez vérifier l' autocrlfétat de votre configuration git comme ceci:

git config core.autocrlf

Donc, si cela revient trueet que le problème survient dans un référentiel git, vous devrez changer cette configuration en

git config --global core.autocrlf input

sur un système Mac / Unix. Pour les projets Windows uniquement que vous pouvez utiliser

git config --global core.autocrlf false

Dans mon cas, j'ai supprimé le référentiel git et je l'ai cloné à nouveau et après cela, tout a fonctionné à nouveau comme prévu.

En savoir plus sur https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

chanceux
la source
tu as sauvé ma journée. Je luttais avec ce problème de fin de ligne pendant 2 jours.
Tahmidur Rahman il y a
3

Comme le disent les commentaires ci-dessus, cela se produit en raison des fins de ligne de Windows. Pour résoudre le problème, procédez comme suit

Pour Mac:

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

Pour Linux:

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

Et assurez-vous que votre configuration git est définie comme suit:

git config --global core.autocrlf input
salvi shahzad
la source
Travailler enfin. J'étais confronté à ce problème pendant 2 jours et c'était à cause des fins de ligne Windows du projet que j'ai cloné à partir du github et finalement votre solution était la solution parfaite. Merci.
Riddhi le
1
Je suis heureux que cela vous ait aidé :)
salvi shahzad
a finalement parfaitement fonctionné. merci beaucoup
Muhammad Ashfaq
2

Dans mon cas, j'avais une mauvaise configuration git. La documentation de git déclare:

Si vous programmez sous Windows et travaillez avec des personnes qui ne le sont pas (ou vice-versa), vous rencontrerez probablement des problèmes de fin de ligne à un moment donné

J'utilise Mac OS et j'ai exactement ce problème dans l'un de mes projets. Pour le résoudre, je me suis mis autocrlfà l' écoute true.

Vous pouvez vérifier l' autocrlfétat de votre configuration git comme ceci:

git config core.autocrlf

Donc, si cela revient trueet que le problème survient dans un référentiel git, vous devrez changer cette configuration en

git config --global core.autocrlf input

qui est le bon pour les systèmes Mac / Unix. Pour les projets Windows uniquement que vous pouvez utiliser

git config --global core.autocrlf false

Dans mon cas, j'ai supprimé le référentiel git et je l'ai extrait à nouveau et après cela, tout a fonctionné à nouveau comme prévu.

En savoir plus sur https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

chanceux
la source