427 votes

./configure : /bin/sh^M : mauvais interprète

J'ai essayé d'installer lpng142 sur mon système fed 12. Il me semble qu'il y a un problème. J'obtiens cette erreur

[root@localhost lpng142]# ./configure
bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory
[root@localhost lpng142]# 

Comment puis-je réparer cela ? Le site /etc/fstab fichier :

#
# /etc/fstab
# Created by anaconda on Wed May 26 18:12:05 2010
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=ce67cf79-22c3-45d4-8374-bd0075617cc8 /boot                   ext4    
defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

3 votes

Merci, dos2unix a sauvé ma journée. pour les utilisateurs d'osx, c'est de plus en plus facile. brew install dos2unix dos2unix

6 votes

VIM :set fileformat=unix

0 votes

@tripleee Aidez-moi à comprendre pourquoi vous marquez cette question comme étant dupliquée. Cette question a été posée il y a 7 ans et la question liée a été posée il y a un an. Ce devrait être l'inverse

823voto

polymame Points 1731

Pour corriger, ouvrez votre script avec vi ou vim et entrez en mode commande vi (touche Esc ), puis tapez ceci :

:set fileformat=unix

Enfin, sauvegardez-le

:x! ou :wq!

3 votes

J'ai le même problème avec des fichiers multiples, comment cela peut-il être appliqué à une arborescence de répertoires ? Dois-je aller dans chaque répertoire et ouvrir les fichiers un par un dans vi et faire ":set fileformat=unix" ? ? Merci de m'aider.

33 votes

:set ff=unix fonctionne aussi :)

11 votes

Pourquoi sauvegarder avec " !"? Il n'est utilisé que si vous voulez abandonner les modifications, ce qui n'est pas le cas. Si la sauvegarde échoue, c'est que vous avez peut-être fait quelque chose de mal.

379voto

Richard Points 2778

On dirait que vous avez un fichier de fin de ligne de dos. L'indice est le ^M .

Vous devez réenregistrer le fichier en utilisant les fins de ligne Unix.

Vous pourriez avoir dos2unix un utilitaire de ligne de commande qui fera également cela pour vous.

1 votes

Oui, le ^M semblait bizarre. J'ai vu cette suggestion de configuration dos2unix quelque part sur le net, mais je ne voulais pas rencontrer d'autres problèmes. Ok, je croise les doigts, je vais essayer :) Merci pour les réponses rapides, Konerak et Richard.

0 votes

Merci. Je n'arrivais pas à comprendre pourquoi ma tâche cron ne fonctionnait plus... C'est réparé, mais je ne me souviens pas l'avoir modifié dans Windows.

14 votes

Si le projet que vous essayez de construire comporte de nombreux scripts qui nécessitent une conversion (c'est le cas de Qt), appliquer dos2unix de manière récursive peut être une bonne idée. L'exécution de "find . -type f | xargs dos2unix" depuis le répertoire de premier niveau le fera pour vous.

118voto

Somaiah Kumbera Points 434

Ou si vous voulez faire cela avec un script :

sed -i 's/\r//' filename

8 votes

+1, ça a marché pour moi sur debian linux

4 votes

C'est simple, mais cela ne fonctionne qu'avec GNU sed . Avec BSD/macOS sed vous devez utiliser sed -i '' $'s/\r//' filename (de bash ), ou, un peu plus robuste : sed -i '' $'s/\r$//' filename

48voto

Konerak Points 22484

Votre fichier configure contient Fin de ligne CRLF (style Windows) au lieu de simples fins de ligne LF (style Unix). L'avez-vous transféré en utilisant le mode FTP ASCII depuis Windows ?

Vous pouvez utiliser

dos2unix configure

pour corriger cela, ou ouvrez-le dans vi et utilisez :%s/^M//g; pour les substituer tous (utiliser CTRL + V , CTRL + M pour obtenir le ^M)

2 votes

Non, j'ai bien utilisé linux pour télécharger le fichier .gz. Aucune idée de comment CRLF est arrivé là.

2 votes

Vim search and replace qui est plus facile à taper : %s/\r$//g

1 votes

Sur certains systèmes (par exemple les récentes Debian / Ubuntu), le binaire s'appelle fromdos, et non dos2unix.

29voto

wu liang Points 611

Vous pouvez utiliser la commande suivante pour réparer

cat file_name.sh | tr -d '\r' > file_name.sh.new

2 votes

Cela fonctionne également sous MacOS X 10.11.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X