Cygwin - Erreur "$'\r': command not found"

Publié le 17 Février 2010

Lors de l'utilisation de Cygwin sous windows je rencontre parfois l'erreur suivante:

./myScript.sh: line 11: $'\r': command not found
./myScript.sh: line 38: syntax error near unexpected token `$'in\r''


Cette erreur ce produit uniquement avec l'utilisation du shell: "sh"
Lorsque la première ligne du fichier .sh commence par #!/usr/bin/sh

En fait cette erreur est due à la différence d'encodage des caractères entre Unix/Linux et Windows, notamment sur les caractères de retour à la ligne:

windows \r\n retour charriot + saut de ligne
linux/unix \n saut de ligne uniquement

Cygwin, lors de l'execution du shell "sh", attend un script au format Unix (avec des retour à la ligne de type "\n").

Hors Cygwin fonctionne sous Windows et donc notre script "myScript.sh" contient des retour à la ligne sous la forme "\r\n".

Et donc le shell "sh" ne sait pas comment interpréter les caractères "\r".

Voilà pour l'analyse. Maintenant la solution :

Il faut passer notre script du format "Windows" au format "Unix" avec la commande:

dos2unix myScript.sh

puis il suffit de relancer le script :

./myScript.sh

Rédigé par Bliz

Publié dans #Script

Repost 0
Commenter cet article

Romain 20/01/2016 11:44

Merci beaucoup

glouglou 22/01/2011 19:04



merci, very helpfull le dos2unix!


Mes scripts ne sont enfin plus sur une seule et unique ligne....complètement illisible.... J avais tenté le format UNIX sur notepad++ mais ça n a pas maché. dos2unix est imparable!