./ configure: / bin / sh^M: mauvais interpréteur [dupliquer]

cette question a déjà une réponse ici:

j'ai essayé d'installer lpng142 sur mon système fed 12. Semble être un problème pour moi. Je reçois cette erreur

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

Comment faire - Je résoudre ce problème? Le fichier /etc/fstab :

#
# /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
330
demandé sur Konerak 2010-05-27 14:49:52

15 réponses

pour corriger, ouvrir votre script avec vi ou vim et entrer en mode commande vi (touche Esc ), tapez alors:

:set fileformat=unix

Enfin enregistrer

:x! ou :wq!

618
répondu polymame 2018-03-30 20:17:38

ressemble à vous avez un fichier de fin de ligne dos. L'indice est le ^M .

vous devez sauvegarder à nouveau le fichier en utilisant les terminaisons de ligne Unix.

vous pourriez avoir un utilitaire en ligne de commande dos2unix qui le fera aussi pour vous.

351
répondu Richard 2016-12-12 14:49:49

Ou si vous voulez le faire avec un script:

sed -i 's/\r//' filename
74
répondu Somaiah Kumbera 2012-06-13 16:14:28

votre fichier configure contient les fins de ligne CRLF (style windows) au lieu de simples fins de ligne LF (style unix). L'avez-vous transféré depuis Windows en mode FTP ASCII?

vous pouvez utiliser

dos2unix configure

pour fixer ceci, ou l'ouvrir dans vi et utiliser :%s/^M//g; pour les remplacer tous (utilisez CTRL + V , Ctrl + M pour obtenir le ^M)

40
répondu Konerak 2016-12-12 14:50:25

vous pouvez utiliser la commande suivante pour corriger

cat file_name.sh | tr -d '\r' > file_name.sh.new
22
répondu wu liang 2013-07-09 03:15:01

si vous ne pouviez pas trouver exécuter la commande,

CentOS:

# yum install dos2unix*

# dos2unix filename.sh
dos2unix: converting file filename.sh to Unix format ...

Ubuntu/ Debian:

# apt-get install dos2unix
12
répondu lakshmikandan 2015-07-28 09:25:22

cela se produit généralement lorsque vous avez édité un fichier depuis Windows et que vous essayez maintenant d'exécuter ce fichier depuis une machine basée sur unix.

la solution présentée sur Linux Forum a fonctionné pour moi (plusieurs fois):

perl -i -pe's/\r$//;' <file name here>

Espérons que cette aide.

PS: vous devez avoir perl installé sur votre machine unix/linux.

9
répondu URB 2014-03-13 08:05:03

si vous êtes sur OS X, vous pouvez modifier les fins de ligne dans XCode en ouvrant le fichier et en sélectionnant le

Affichage -> Texte -> Fin De Ligne -> Unix

menu item, puis Enregistrer. C'est pour le XCode 3.x. Probablement quelque chose de similaire dans le XCode 4.

4
répondu Vern Jensen 2012-01-26 22:46:42

suite au commentaire de Richard. Voici la façon simple de convertir votre fichier en fin de ligne UNIX. Si vous êtes comme moi, vous l'avez créé dans Windows Notepad et ensuite essayé de l'exécuter sous Linux - mauvaise idée.

  1. Téléchargez et installez vous une copie de Notepad++ (gratuit).
  2. ouvrez votre fichier script dans Notepad++.
  3. menu Fichier - > Enregistrer sous - >
  4. Enregistrer en tant que type: Unix script file (*.sh;*.bsh)
  5. copiez la nouvelle .sh fichier à votre système Linux
  6. Maxe exécutable avec: chmod 755 the_script_filename
  7. Run: ./the_script_filename

autres problèmes , essayez ce lien .

4
répondu zuallauz 2013-02-04 10:31:36

utilisez la commande dos2unix de linux pour convertir le fichier sauvegardé. exemple:

dos2unix file_name
4
répondu srpatcha 2016-07-29 19:58:39

grâce au commentaire de pwc101 sur ce post , cette commande a fonctionné sous Kali Linux .

sed -i s/{ctrl+v}{ctrl+m}// {filename}

assurez-vous de remplacer les bits entre parenthèses, {} . C'est-à-dire: {ctrl+m} signifie appuyer sur la touche Ctrl et sur la touche M .

4
répondu br3nt 2018-03-30 20:18:28

vous pouvez aussi le faire dans Kate.

  1. ouvrir le fichier
  2. ouvrir le menu Outils
  3. étendre la fin de ligne sous-menu
  4. sélectionner UNIX
  5. enregistrer le fichier.
3
répondu Tjaart 2014-03-20 18:17:41

si vous utilisez TextMate ou un programme similaire, enregistrez sous, puis dans les encodages, choisissez LF au lieu de CRLF .

2
répondu patapouf_ai 2017-03-08 11:00:52

ajoute juste sh avant le nom du script pour que ça marche dans mon cas.

2
répondu SkorpEN 2017-08-28 11:39:24

lorsque vous écrivez votre script sur windows et que vous voulez l'exécuter sur unix environnement, vous devez faire attention à l'encodage:

dos2unix $filePath

1
répondu Youssouf Maiga 2017-04-11 14:22:19