./configure: / bin / sh ^ M: intérprete incorrecto

He estado intentando instalar lpng142 en mi sistema fed 12. Me parece un problema. Me sale este error

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

¿Cómo puedo solucionar esto? El /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 

Para solucionarlo, abra su secuencia de comandos con vi o vim y entre en el modo de comando vi (tecla Esc ), luego escriba esto:

 :set fileformat=unix 

Finalmente guárdalo

:x! o :wq!

Parece que tienes un archivo final de dos líneas. La clave es el ^M

Debe volver a guardar el archivo usando terminaciones de línea Unix.

Es posible que tenga una utilidad de línea de comandos dos2unix que también lo hará por usted.

O si quieres hacer esto con un script:

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

El archivo de configuración contiene terminaciones de línea CRLF (estilo de Windows) en lugar de terminaciones de línea LF simples (estilo Unix). ¿Lo transfirió usando el modo FTP ASCII desde Windows?

Puedes usar

 dos2unix configure 

para arreglar esto, o ábralo en vi y use :%s/^M//g; para sustituirlos a todos (use CTRL + V , CTRL + M para obtener ^ M)

Puedes usar el siguiente comando para arreglar

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

Si no pudo encontrar ejecutar el comando,

CentOS:

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

Ubuntu / Debian:

 # apt-get install dos2unix 

Esto generalmente ocurre cuando ha editado un archivo desde Windows y ahora intenta ejecutarlo desde alguna máquina basada en Unix.

La solución presentada en Linux Forum funcionó para mí (muchas veces):

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

Espero que esto ayude.

PD: necesitas tener Perl instalado en tu máquina Unix / Linux.

Si está en OS X, puede cambiar los finales de línea en XCode abriendo el archivo y seleccionando

Ver -> Texto -> Terminaciones de línea -> Unix

elemento de menú, luego Guardar. Esto es para XCode 3.x. Probablemente algo similar en XCode 4.

Siguiendo con el comentario de Richard. Aquí está la manera fácil de convertir su archivo a terminaciones de línea UNIX. Si eres como yo, lo creaste en el Bloc de notas de Windows y luego trataste de ejecutarlo en Linux – mala idea.

  1. Descargue e instale una copia de Notepad ++ (gratis).
  2. Abra su archivo de script en Notepad ++.
  3. Menú Archivo -> Guardar como ->
  4. Guardar como tipo: Unix script file (*.sh;*.bsh)
  5. Copie el nuevo archivo .sh a su sistema Linux
  6. Maxe es ejecutable con: chmod 755 the_script_filename
  7. Ejecútelo con: ./the_script_filename

Cualquier otro problema, prueba este enlace .

Gracias al comentario de pwc101 en esta publicación , este comando funcionó en Kali Linux.

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

Asegúrese de reemplazar los bits entre paréntesis, {} . Es decir {ctrl+m} significa presionar la tecla Ctrl y la tecla M juntas.

También puedes hacer esto en Kate.

  1. Abre el archivo
  2. Abra el menú Herramientas
  3. Expanda el submenú End Of Line
  4. Seleccionar UNIX
  5. Guarde el archivo.

Use el comando dos2unix en linux para convertir el archivo guardado. ejemplo:

 dos2unix file_name 

Si está utilizando TextMate o un progtwig similar, guarde como, y luego en codificaciones elija LF lugar de CRLF .

Solo agregue sh antes del nombre del script para que funcione en mi caso.

Cuando escribe su script en el entorno de Windows y desea ejecutarlo en unix environnement, debe tener cuidado con el cifrado:

dos2unix $ filePath