Je suis sur un kali linux 64 bits.
J'ai créé un script python qui prend 2 arguments pour démarrer. Je ne veux pas taper à chaque fois exactement les mêmes chemins ou rechercher dans l'historique des commandes que j'ai utilisées dans le terminal. J'ai donc décidé de créer un script simple qui appelle le script python avec ses arguments.
#! /bin bash
python CreateDB.py ./WtfPath ./NoWtfPath/NewSystem/
C'est exactement la même commande que j'utiliserais dans le terminal. Cependant, j'obtiens un message d'erreur lorsque j'essaie d'exécuter le fichier de script.
bash: ./wtf.sh: /bin: bad interpreter: Permission denied
wtf.sh a des droits exécutables.
Qu'est-ce qui ne va pas?
#!/bin/sh
(au lieu de#!/bin/bash
) à moins de savoir que vous utilisez desbash
fonctionnalités.sh
lorsque je sais que je n'utilise pas les fonctionnalités de bash).which bash
est utile. Cela revient/bin/bash
. En haut de mon script Bash j'ajoute#!/bin/bash
. Ensuite, quand je veux exécuter le script Bash, j'entrebash foo.sh
.which sh
Est donc utilisé de la même manière.sh foo.sh
/bin/sh
il y a autre chose que Bash et il y a des bashismes inaperçus dans le script). Vois ici.Il est à noter que si le point de montage sur lequel réside votre script a l'attribut 'noexec', vous pouvez alors faire tout ce que vous voulez et cela ne fonctionnera toujours pas, mais invoquer l'interpréteur avec le script comme argument le fera (tant que qui à son tour n'essaie pas d'exécuter un autre script sur un montage noexec).
la source