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 root
usuario en el root
grupo.
¿Significa que el archivo no tiene el permiso correcto para el root
usuario?
fuente
dos2unix
programa.\n
porque es Unix. ¿El script fue quizás de una versión anterior de Mac OS? Podrías corrersed -i -e 's/\r$/\n/' script.sh
en ese caso.En vim también puede usar
:set ff=unix
y luego guardar el archivo, o:set ff=dos
para 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
^M
en 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^M
presione 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