Estoy en un kali linux de 64 bits.
He creado un script de Python que toma 2 argumentos para comenzar. No quiero escribir cada vez exactamente las mismas rutas o buscar en el historial de los comandos que utilicé en la terminal. Así que decidí crear un script simple que llame al script python con sus argumentos.
#! /bin bash
python CreateDB.py ./WtfPath ./NoWtfPath/NewSystem/
Es exactamente el mismo comando que usaría en la terminal. Sin embargo, recibo un mensaje de error cuando intento ejecutar el archivo de script.
bash: ./wtf.sh: /bin: bad interpreter: Permission denied
wtf.sh tiene derechos ejecutables.
¿Qué está mal?
#!/bin/sh
(en lugar de#!/bin/bash
) a menos que sepa que está usandobash
funciones.sh
cuando sé que no estoy usando las funciones de bash).which bash
es útil. Eso vuelve/bin/bash
. En la parte superior de mi script Bash agrego#!/bin/bash
. Luego, cuando quiero ejecutar el script Bash, entrobash foo.sh
. Entonceswhich sh
se usa de la misma manera.sh foo.sh
/bin/sh
es algo diferente a Bash y hay Bashismos inadvertidos en el script). Mira aquí.Vale la pena señalar que si el punto de montaje en el que reside su script tiene el atributo 'noexec', puede cambiar todo lo que quiera y aún no funcionará, pero invocar al intérprete con el script como argumento lo hará (siempre que que a su vez no intenta ejecutar otro script en un montaje noexec).
fuente