Permisos
El fichero existe y se lee bien, pero no arranca. Hay cuatro motivos distintos y el mensaje es el mismo para todos.
En el orden en que lo miramos nosotros. No es un ranking de frecuencia: no publicamos estadísticas que no hemos medido.
Falta el bit de ejecución.
Comprobar
ls -l script.shCorregir
chmod +x script.shEl sistema de ficheros está montado con noexec. Habitual en /tmp y en /var por endurecimiento.
Comprobar
findmnt -no OPTIONS -T script.shCorregir
# Mover el script a un sistema de ficheros sin noexec, que es lo correcto.
# Quitar noexec de /tmp deshace una medida de seguridad deliberada.Falta el permiso de ejecución en algún directorio de la ruta. Para atravesar un directorio hace falta su bit x, no el de lectura.
Comprobar
namei -l $(pwd)/script.shCorregir
chmod +x /ruta/intermediaEl intérprete del shebang existe pero no tiene su propio bit de ejecución. El mensaje señala al script y el permiso que falta está en el intérprete.
Comprobar
head -1 script.sh
ls -l $(head -1 script.sh | sed 's|^#!||' | awk '{print $1}')Corregir
sudo chmod +x /ruta/al/interpreteSi el shebang apunta a un intérprete que no existe —o el fichero tiene saltos de línea de Windows y queda un \r pegado al nombre— el error **no** es este: es «bad interpreter: No such file or directory». Se distinguen a simple vista, y head -1 script.sh | cat -A lo confirma mostrando el ^M al final de la línea.
Los comandos de esta página se ejecutan en tu servidor y algunos modifican la configuración: léelos antes de pegarlos. Las rutas y los nombres de servicio varían entre distribuciones. Así se elabora este catálogo.
Soporte Linux y DevOps en español