./configure : /bin/sh^M : slechte interpreter

Ik heb geprobeerd lpng142 te installeren op mijn Fed 12-systeem. Lijkt mij een probleem. Ik krijg deze foutmelding

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

Hoe los ik dit op? Het bestand /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

Antwoord 1, autoriteit 100%

Om dit op te lossen, open je je script met vi of vim en ga je naar de vi-opdrachtmodus (toets Esc) en typ je dit:

:set fileformat=unix

Eindelijk opslaan

:x!of :wq!


Antwoord 2, autoriteit 46%

Het lijkt erop dat je een eindbestand van de dos-regel hebt. De aanwijzing is de ^M.

Je moet het bestand opnieuw opslaan met Unix-regeleinden.

Misschien heeft u een dos2unixopdrachtregelprogramma dat dit ook voor u doet.


Antwoord 3, autoriteit 15%

Of als je dit met een script wilt doen:

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

Antwoord 4, autoriteit 6%

Uw configuratiebestand bevat CRLF-regeleinden(windows-stijl) in plaats van eenvoudige LF-regeleinden (unix-stijl). Heb je het vanuit Windows overgebracht met de FTP-modus ASCII?

U kunt

. gebruiken

dos2unix configure

om dit op te lossen, of open het in vi en gebruik :%s/^M//g;om ze allemaal te vervangen (gebruik CTRL+V , CTRL+Mom de ^M)

te krijgen


Antwoord 5, autoriteit 4%

Je kunt het volgende commando gebruiken om het op te lossen

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

Antwoord 6, autoriteit 2%

Als u de opdracht niet kunt vinden, voer dan de opdracht uit,

CentOS:

# yum install dos2unix*
# dos2unix filename.sh
dos2unix: converting file filename.sh to Unix format ...

Ubuntu / Debian:

# apt-get install dos2unix

Antwoord 7, autoriteit 2%

Dit gebeurt meestal als je een bestand vanuit Windows hebt bewerkt en dat nu probeert uit te voeren vanaf een op Unix gebaseerde machine.

De oplossing gepresenteerd op Linux Forumwerkte voor mij (vaak):

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

Hopelijk helpt dit.

PS: je moet perl geïnstalleerd hebben op je unix/linux machine.


Antwoord 8

Dankzij de opmerking van pwc101 op dit bericht, dit commando werkte in Kali Linux .

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

Zorg ervoor dat je de bits tussen haakjes vervangt, {}. D.w.z. {ctrl+m}betekent dat u de Ctrl-toets en de M-toets tegelijk indrukt.


Antwoord 9

Als u OS X gebruikt, kunt u regeleindes in XCode wijzigen door het bestand te openen en de

Bekijken -> Tekst -> Regeleinden -> Unix

menu-item en vervolgens Opslaan. Dit is voor XCode 3.x. Waarschijnlijk iets soortgelijks in XCode 4.


Antwoord 10

In vervolg op Richard’s opmerking. Hier is de gemakkelijke manier om uw bestand naar UNIX-regeleindes te converteren. Als je op mij lijkt, heb je het in Windows Kladblok gemaakt en vervolgens geprobeerd het in Linux uit te voeren – slecht idee.

  1. Download en installeer zelf een kopie van Notepad++(gratis).
  2. Open je scriptbestand in Notepad++.
  3. Bestandsmenu-> Opslaan als->
  4. Opslaan als type:Unix script file (*.sh;*.bsh)
  5. Kopieer het nieuwe .sh-bestand naar je Linux-systeem
  6. Maximaal uitvoerbaar met: chmod 755 the_script_filename
  7. Voer het uit met: ./the_script_filename

Andere problemen probeer deze link.


Antwoord 11

Als je TextMate of een soortgelijk programma gebruikt, sla dan op als, en kies dan in coderingen LFin plaats van CRLF.


Antwoord 12

Als je sh voor de scriptnaam toevoegt, werkt het in mijn geval.


Antwoord 13

Gebruik de opdracht dos2unix in linux om het opgeslagen bestand te converteren.
voorbeeld :

dos2unix file_name

Antwoord 14

Als u uw script in een Windows-omgeving schrijft en u wilt het op een Unix-omgeving uitvoeren, moet u voorzichtig zijn met de codering:

dos2unix $filePath


Antwoord 15

Je kunt dit ook in Kate doen.

  1. Open het bestand
  2. Open het Extramenu
  3. Breid het submenu End Of Lineuit
  4. Selecteer UNIX
  5. Bewaarhet bestand.

Other episodes