./configure: / bin / sh ^ M: interprete non valido

Ho provato a installare lpng142 sul mio sistema 12 alimentato. Sembra un problema per me. Ho ricevuto questo errore

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

Come posso risolvere questo? Il /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 

Per risolvere il problema, apri lo script con vi o vim ed entra in modalità comando vi (tasto Esc ), quindi digita:

 :set fileformat=unix 

Finalmente salvalo

:x! oppure :wq!

Sembra che tu abbia un file di fine linea dos. L’indizio è il ^M

È necessario ri-salvare il file usando le terminazioni di linea Unix.

Potresti avere un dos2unix riga comandi dos2unix che farà anche questo per te.

O se vuoi farlo con uno script:

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

Il tuo file di configurazione contiene terminazioni di linea CRLF (stile windows) anziché semplici terminazioni di linea LF (stile unix). Lo hai trasferito usando la modalità FTP ASCII da Windows?

Puoi usare

 dos2unix configure 

per risolvere questo problema, o aprirlo in vi e utilizzare :%s/^M//g; per sostituirli tutti (usa CTRL + V , CTRL + M per ottenere il ^ M)

È ansible utilizzare il seguente comando per risolvere

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

Se non è stato ansible trovare eseguire il comando,

CentOS:

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

Ubuntu / Debian:

 # apt-get install dos2unix 

Questo di solito accade quando hai modificato un file da Windows e ora provi ad eseguirlo da qualche macchina basata su Unix.

La soluzione presentata su Linux Forum ha funzionato per me (molte volte):

 perl -i -pe's/\r$//;'  

Spero che questo ti aiuti.

PS: devi aver installato perl sul tuo computer unix / linux.

Se sei su OS X, puoi modificare le terminazioni di linea in XCode aprendo il file e selezionando il

Visualizza -> Testo -> Fine linea -> Unix

voce di menu, quindi Salva. Questo è per XCode 3.x. Probabilmente qualcosa di simile in XCode 4.

Seguendo il commento di Richard. Ecco il modo semplice per convertire il tuo file in terminazioni di linea UNIX. Se sei come me l’hai creato in Blocco note di Windows e poi hai provato a eseguirlo su Linux – ctriggers idea.

  1. Scarica e installa te stesso una copia di Notepad ++ (gratuito).
  2. Apri il tuo file di script in Notepad ++.
  3. Menu File -> Salva come ->
  4. Salva come: Unix script file (*.sh;*.bsh)
  5. Copia il nuovo file .sh sul tuo sistema Linux
  6. Massimo eseguibile con: chmod 755 the_script_filename
  7. ./the_script_filename con: ./the_script_filename

Qualsiasi altro problema prova questo link .

Grazie al commento di pwc101 su questo post , questo comando ha funzionato in Kali Linux.

sed -is/{ctrl+v}{ctrl+m}// {filename}

Assicurati di sostituire i bit tra parentesi, {} . Per esempio {ctrl+m} significa premere il tasto Ctrl e il tasto M insieme.

Puoi anche farlo in Kate.

  1. Apri il file
  2. Apri il menu Strumenti
  3. Espandi il sottomenu Fine della linea
  4. Seleziona UNIX
  5. Salva il file.

Utilizzare il comando dos2unix in linux per convertire il file salvato. esempio :

 dos2unix file_name 

Se stai usando TextMate o un programma simile, salva come, e poi nelle codifiche scegli LF invece di CRLF .

Basta aggiungere sh prima che il nome dello script lo faccia funzionare nel mio caso.

Quando scrivi il tuo script in ambiente Windows e vuoi eseguirlo su unix environnement devi fare attenzione alla codifica:

dos2unix $ filePath