Quería ejecutar un script de shell:
-rwxr-x--x 1 root root 17234 Jun 6 18:31 create_mgw_3shelf_6xIPNI1P.sh
Intenté hacer un procedimiento estándar, pero recibí este error:
./create_mgw_3shelf_6xIPNI1P.sh
localhost 389 -l /opt/fews/sessions/AMGWM19/log/2013-06-06-143637_CLA-0
DEBUG cd/etc/opt/ldapfiles/ldif_in ;
./create_mgw_3shelf_6xIPNI1P.sh
localhost 389 -l /opt/fews/sessions/AMGWM19/log/2013-06-06-143637_CLA-0
**ERROR sh: ./create_mgw_3shelf_6xIPNI1P.sh: /bin/bash^M: bad interpreter: No such file or directory**
Qué significa eso? Estaba haciendo esto como rootusuario en el rootgrupo.
¿Significa que el archivo no tiene el permiso correcto para el rootusuario?
fuente

dos2unixprograma.\nporque es Unix. ¿El script fue quizás de una versión anterior de Mac OS? Podrías corrersed -i -e 's/\r$/\n/' script.shen ese caso.En vim también puede usar
:set ff=unixy luego guardar el archivo, o:set ff=dospara obtener el formato de DOS nuevamente.fuente
Su archivo tiene terminaciones de línea de estilo DOS / Windows (CR LF) , pero en sistemas tipo Unix solo se usa el carácter de control LF como salto de línea.
El carácter de control CR adicional se muestra codificado como
^Men su salida. También puedes verlo cuando correscat -A create_mgw_3shelf_6xIPNI1P.sh.Para convertir las terminaciones de línea del estilo DOS / Windows al estilo Unix, hay una herramienta llamada
dos2unix. Lo instalas usando:Luego, simplemente puede convertir las terminaciones de línea de los archivos de ambas maneras usando
En su caso, simplemente ejecute este comando a continuación y el archivo de script se convertirá en su lugar:
Después de eso, Bash debería poder interpretar el archivo correctamente.
fuente
El problema es que editas con Dos!
abra su archivo con vi y luego configure unix con:
y todo bien
fuente
Hacer
vi <your script>.a continuación
:set list; mostrará cualquiera de los caracteres especiales en su secuencia de comandos.luego reemplaza el personaje:
:%s/^M//gc[para escribir^Mpresione Ctrl+ v+ m]fuente
Como se explica en las otras respuestas, este es un problema de formato. Entonces, la respuesta es cambiar el formato de DOS a finales de línea de estilo Unix. Esta es otra forma simple de arreglar su archivo 'en su lugar'
Está disponible en paquete
tofrodos:fuente
También puede usar gedit para eliminar los caracteres no deseados. En el menú Archivo, seleccione Guardar como y establezca el tipo de final de línea unix / Linux.
fuente