Wenn Sie
./program
Die Schale geben versucht, das Programm auszuführen, je nachdem wie es bestimmt die Datei ausgeführt werden muss. Wenn es sich um eine Binärdatei handelt, wird versucht, die Eingabeunterroutine auszuführen. Wenn die Shell detektiert ist es ein Skript, zB durch die Verwendung von
#!/bin/sh
oder
#!/bin/awk
oder allgemeiner
#!/path/to/interpreter
die Shell die Datei übergeben werden (und alle bereitgestellten Argumente) als Argumente für den angegebenen Interpreter, der dann das Skript ausführt. Wenn der im Pfad angegebene Interpreter nicht existiert, wird die Shell fehlerhaft sein, und wenn keine Interpreterzeile gefunden wird, nimmt die Shell an, dass das angegebene Skript von selbst ausgeführt wird.
./program
Ein Befehl
sh program
zu
äquivalent ist, wenn die erste Zeile des Programms enthält
#!/bin/sh
unter der Annahme, dass/bin/sh das SH im Pfad ist (es könnte zum Beispiel/system/bin/sh sein). Wenn Sie eine Binärdatei an sh übergeben, wird sh als Shell-Skript behandelt, was nicht der Fall ist, und binary ist keine interpretierbare Shell (was einfacher Text ist). Aus diesem Grund können Sie in diesem Zusammenhang nicht
verwenden. Es wird auch fehlschlagen, weil das Programm ruby, awk, sed oder irgendetwas anderes ist, das kein Shell-Skript ist.
sollte es nicht #!/Bin/sh sein? – Protostome