it-swarm.com.de

./configure: / bin / sh ^ M: Schlechter Interpreter

Ich habe versucht, lpng142 auf meinem Fed 12-System zu installieren. Scheint mir ein Problem zu sein. Ich bekomme diesen Fehler

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

Wie behebe ich das? Die /etc/fstab Datei:

#
# /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
373
Vineeth

Um das Problem zu beheben, öffnen Sie Ihr Skript mit vi oder vim und rufen Sie den vi - Befehlsmodus auf (Taste Esc), dann tippe folgendes ein:

:set fileformat=unix

Speichern Sie es schließlich

:x! oder :wq!

710
polymame

Sieht so aus, als hätten Sie eine Datei mit der Endung der Dos-Zeile. Der Hinweis ist der ^M.

Sie müssen die Datei mit Unix-Zeilenenden erneut speichern.

Möglicherweise haben Sie ein dos2unix Befehlszeilenprogramm, das dies auch für Sie erledigt.

360
Richard

Oder wenn Sie dies mit einem Skript tun möchten:

sed -i 's/\r//' filename
92
Somaiah Kumbera

Ihre Konfigurationsdatei enthält CRLF-Zeilenenden (Windows-Stil) anstelle einfacher LF-Zeilenenden (Unix-Stil). Haben Sie es im FTP-Modus ASCII von Windows übertragen?

Sie können verwenden

dos2unix configure

um dies zu beheben, oder öffne es in vi und benutze :%s/^M//g;, um sie alle zu ersetzen (benutze CTRL+VCTRL+M um das ^ M) zu bekommen

42
Konerak

Sie können den folgenden Befehl verwenden, um das Problem zu beheben

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

Wenn Sie den Befehl nicht finden konnten, führen Sie ihn aus.

CentOS:

# yum install dos2unix*

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

Ubuntu/Debian:

# apt-get install dos2unix
13
lakshmikandan

Dies ist normalerweise der Fall, wenn Sie eine Datei unter Windows bearbeitet haben und nun versuchen, diese auf einem Unix-basierten Computer auszuführen.

Die im Linux Forum vorgestellte Lösung hat bei mir (mehrmals) funktioniert:

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

Hoffe das hilft.

PS: Sie müssen Perl auf Ihrem Unix/Linux-Rechner installiert haben.

10
URB

Wenn Sie unter OS X arbeiten, können Sie die Zeilenenden in XCode ändern, indem Sie die Datei öffnen und das Symbol auswählen

Ansicht -> Text -> Zeilenenden -> Unix

menüpunkt, dann Speichern. Dies ist für XCode 3.x. Wahrscheinlich etwas Ähnliches in XCode 4.

5
Vern Jensen

Verwenden Sie den Befehl dos2unix unter Linux, um die gespeicherte Datei zu konvertieren. Beispiel:

dos2unix file_name
4
srpatcha

Dank des Kommentars von pwc101 zu diesem Beitrag funktionierte dieser Befehl in Kali Linux.

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

Stellen Sie sicher, dass Sie die Bits in Klammern {} ersetzen. Das heißt {ctrl+m} bedeutet drücken Ctrl Schlüssel und die M Schlüssel zusammen.

4
br3nt

Im Anschluss an Richards Kommentar. Hier ist die einfache Möglichkeit, Ihre Datei in UNIX-Zeilenenden zu konvertieren. Wenn Sie wie ich sind, haben Sie es in Windows Notepad erstellt und dann versucht, es unter Linux auszuführen - schlechte Idee.

  1. Laden Sie sich eine Kopie von Notepad ++ (kostenlos) herunter und installieren Sie sie.
  2. Öffnen Sie Ihre Skriptdatei in Notepad ++.
  3. Dateimenü -> Speichern unter ->
  4. Dateityp: Unix script file (*.sh;*.bsh)
  5. Kopieren Sie die neue .sh-Datei auf Ihr Linux-System
  6. Maxe es ausführbar mit: chmod 755 the_script_filename
  7. Führen Sie es aus mit: ./the_script_filename

Alle anderen Probleme versuchen Sie diesen Link .

4
zuallauz

Sie können dies auch in Kate tun.

  1. Öffne die Datei
  2. Öffnen Sie das Menü Extras
  3. Erweitern Sie das Untermenü End Of Line
  4. Wählen Sie UNIX
  5. Speichern die Datei.
3
Tjaart

Wenn Sie Ihr Skript in einer Windows-Umgebung schreiben und es in einer Unix-Umgebung ausführen möchten, müssen Sie bei der Codierung vorsichtig sein:

dos2unix $ filePath

3
Youssouf Maiga

Wenn Sie sh vor dem Skriptnamen hinzufügen, funktioniert dies in meinem Fall.

2
SkorpEN

Wenn Sie TextMate oder ein ähnliches Programm verwenden, speichern Sie es unter und wählen Sie dann in den Codierungen LF anstelle von CRLF.

2
patapouf_ai