such - linux bash bad interpreter
./configure:/bin/sh ^ M: mal intérprete (15)
Esta pregunta ya tiene una respuesta aquí:
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
Cuando escribe su script en el entorno de Windows y desea ejecutarlo en entornos UNIX, debe tener cuidado con la codificación:
dos2unix $ filePath
Esto suele suceder cuando ha editado un archivo desde Windows y ahora intenta ejecutarlo desde alguna máquina basada en Unix.
La solución presentada en el foro de Linux funcionó para mí (muchas veces):
perl -i -pe''s//r$//;'' <file name here>
Espero que esto ayude.
PD: necesita tener perl instalado en su máquina unix / linux.
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.
O si quieres hacer esto con un script:
sed -i ''s//r//'' filename
Para corregirlo, abra su script con vi o vim e ingrese 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 la ^M
Debe volver a guardar el archivo utilizando los finales de línea de Unix.
Es posible que tenga una utilidad de línea de comando dos2unix
que también lo hará por usted.
Puedes usar el siguiente comando para arreglar
cat file_name.sh | tr -d ''/r'' > file_name.sh.new
Si está en OS X, puede cambiar los finales de línea en XCode abriendo el archivo y seleccionando
Ver -> Texto -> Finales de línea -> Unix
elemento de menú, luego Guardar. Esto es para XCode 3.x. Probablemente algo similar en XCode 4.
Si está utilizando TextMate o un programa similar, guarde como y luego, en las codificaciones, elija LF
lugar de CRLF
.
Si no pudiste encontrar ejecuta el comando,
CentOS:
# yum install dos2unix*
# dos2unix filename.sh
dos2unix: converting file filename.sh to Unix format ...
Ubuntu / Debian:
# apt-get install dos2unix
Siguiendo el comentario de Richard. Esta es la manera fácil de convertir su archivo a finales de línea UNIX. Si eres como yo, lo creaste en el Bloc de notas de Windows y luego intentaste ejecutarlo en Linux, mala idea.
- Descargue e instale una copia de Notepad++ (gratis).
- Abra su archivo de script en Notepad ++.
- Menú Archivo -> Guardar como ->
- Guardar como tipo:
Unix script file (*.sh;*.bsh)
- Copie el nuevo archivo .sh a su sistema Linux
- Máximo ejecutable con:
chmod 755 the_script_filename
- Ejecutarlo con:
./the_script_filename
Cualquier otro problema prueba este enlace .
Simplemente agregando sh antes del nombre del script, haga que funcione en mi caso.
Su archivo de configuración contiene finales de línea CRLF (estilo de Windows) en lugar de finales de línea LF simples (estilo Unix). ¿Lo transfiriste usando el modo FTP ASCII de Windows?
Puedes usar
dos2unix configure
para solucionarlo, o ábralo en vi y use :%s/^M//g;
para sustituirlos a todos (use CTRL + V , CTRL + M para obtener el ^ M)
También puedes hacer esto en Kate.
- Abre el archivo
- Abre el menú Herramientas
- Expandir el submenú de fin de línea
- Seleccione UNIX
- Guarde el archivo.
Utilice el comando dos2unix en linux para convertir el archivo guardado. ejemplo:
dos2unix file_name