Ich bin auf einem Kali Linux 64 Bit.
Ich habe ein Python-Skript erstellt, das zum Starten zwei Argumente benötigt. Ich möchte nicht jedes Mal genau dieselben Pfade oder Suchvorgänge im Verlauf der Befehle eingeben, die ich im Terminal verwendet habe. Also habe ich beschlossen, ein einfaches Skript zu erstellen, das das Python-Skript mit seinen Argumenten aufruft.
#! /bin bash
python CreateDB.py ./WtfPath ./NoWtfPath/NewSystem/
Es ist genau der gleiche Befehl, den ich im Terminal verwenden würde. Beim Versuch, die Skriptdatei auszuführen, wird jedoch eine Fehlermeldung angezeigt.
bash: ./wtf.sh: /bin: bad interpreter: Permission denied
wtf.sh hat ausführbare Rechte.
Was ist falsch?
#!/bin/sh
(anstelle von#!/bin/bash
) Funktionen zu verwenden, es sei denn, Sie wissen, dass Siebash
Funktionen verwenden.sh
wenn ich weiß, dass ich keine Bash-Funktionen verwende).which bash
ist hilfreich. Das kehrt zurück/bin/bash
. Oben in meinem Bash-Skript füge ich hinzu#!/bin/bash
. Wenn ich dann das Bash-Skript ausführen möchte, gebe ich einbash foo.sh
. Wirdwhich sh
also genauso verwendet.sh foo.sh
/bin/sh
es etwas anderes als Bash ist und das Skript unbemerkte Bashisms enthält). Siehe hier.Es ist erwähnenswert, dass, wenn der Mountpunkt, auf dem sich Ihr Skript befindet, das Attribut 'noexec' hat, Sie alles, was Sie wollen, anzeigen können und es immer noch nicht funktioniert, aber den Interpreter mit dem Skript als Argument aufrufen wird (solange das wiederum versucht nicht, ein anderes Skript auf einem Noexec-Mount auszuführen).
quelle