Linux: Führen Sie eine binary in einem Skript
ich möchte ein Programm ausführen, das über ein Skript.
normalerweise tippe ich ./program
in der shell und das Programm startet.
mein Skript sieht wie folgt aus:
#!/bin/sh
cd /home/user/path_to_the_program/
sh program
scheitert es, ich denke, die Letzte Zeile falsch gelaufen ist...
ich weiß, das ist kindisch Frage, aber thx a lot!
- sollte es nicht #!/bin/sh?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn
./program
funktioniert in der shell, warum nicht verwenden Sie es in Ihrem Skript?sh program
sh startet, um zu versuchen und zu interpretierenprogram
als ein shell-Skript. Wahrscheinlich ist es nicht ein Skript, sondern um eine andere ausführbare Datei, die ist, warum es scheitert.Wenn Sie
Versucht die shell, das Programm auszuführen, je nachdem wie es bestimmt, welche Datei ausgeführt werden muss. Wenn es ein binary ist, es wird versucht, führen Sie die Unterroutine Eintrag. Wenn die shell erkennt es ist ein Skript, e.g durch die Verwendung von
oder
oder generell
die shell übergeben Sie die Datei (und alle angegebenen Argumente), die als Argumente an das mitgelieferte interpreter, der dann das Skript ausführen. Wenn der interpreter im Pfad nicht vorhanden ist, wird die shell Fehler, und wenn keine Dolmetscher Zeile gefunden wird, wird die shell davon aus, dass die mitgelieferten Skript ausgeführt von selbst.
Einen Befehl
entspricht
wenn die erste Zeile des Programms enthält
unter der Annahme, dass /bin/sh ist das sh in Ihrem Pfad (es könnte sein, /system/bin/sh beispielsweise). Vorbei an ein Binär-nach-sh verursacht sh zu behandeln, als ein shell-Skript, das ist es nicht, und binäre nicht interpretierbar shell (das ist plain text). Das ist, warum Sie nicht verwenden können,
in diesem Zusammenhang. Es wird auch scheitern, um Programm, ruby, awk, sed, oder irgendetwas anderes, das ist nicht ein shell-Skript.
Brauchen Sie nicht die
sh
und sieht aus wie Sie nicht haben, den Pfad zu dem Programm in Ihrer$PATH
.Versuchen Sie dies:
Dies sollte genug sein:
Wenn das nicht funktioniert, überprüfen Sie Folgendes:
Brauchen Sie nicht die "sh" hier. Einfach setzen Sie "Programm" auf der letzten Zeile von selbst.
sh
ist nicht notwendig.