Pregunta:
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? Yo estaba haciendo esto como la root
de usuario bajo la root
grupo.
¿Significa que el archivo no tiene el permiso correcto para el usuario root
?
Respuesta:
Esto no es un problema de permisos, no recibe un mensaje sobre permisos
/bin/bash^M: bad interpreter: No such file or directory
El script indica que debe ser ejecutado por un shell ubicado en /bin/bash^M
No existe tal archivo: se llama /bin/bash
.
^M
es un carácter de retorno de carro . Linux usa el carácter de salto de línea para marcar el final de una línea, mientras que Windows usa la secuencia de dos caracteres CR LF. Su archivo tiene terminaciones de línea de Windows, lo que confunde a Linux.
Elimina los caracteres CR falsos. Puedes hacerlo con el siguiente comando:
sed -i -e 's/\r$//' create_mgw_3shelf_6xIPNI1P.sh