
Ich habe den Eindruck, dass wenn ich die Zeile einfüge
#!/bin/bash
am Anfang meiner Datei, wird es als Bash-Skript erkannt, das ich einfach ausführen kann
file.sh
anstatt
sh file.sh
Aber in meinem Fall file.sh
gibt es etwas wie test.sh
gibt test.sh: command not found
. Warum ist das so?
AKTUALISIEREN
Ich merke, dass ich verwenden muss ./
. Aber ich dachte, es wird trotzdem im aktuellen Verzeichnis gesucht?
./test.sh
Antwort1
Zuerst müssen Sie sicherstellen, dass die Datei ausführbar ist:
chmod +x file.sh
Und um es dann auszuführen, müssen Sie es entweder in Ihren PATH einfügen, also in eines der Dateiverzeichnisse, die das Betriebssystem durchsucht, wenn es nach auszuführenden Dateien sucht (Sie finden diese mit ), echo $PATH
oder Sie müssen Folgendes eingeben:
./file.sh
Anstatt einfach nur einzugeben file.sh
.
Sie können einfach eingeben file.sh
, wenn es in Ihrem PATH ist, was ich empfehle. Ein guter Ort ist in ~/bin
. Erstellen Sie diesen Ordner, wenn er nicht vorhanden ist, und unter Ubuntu wird er Ihrem Pfad hinzugefügt, wenn Sie sich anmelden.
Antwort2
Sie müssen es mit ./file.sh starten, da sich das aktuelle Verzeichnis nicht im PATH befindet.
Wenn dies nicht ausreicht, weil Sie verpasst haben, was frabjous vorschlägt, chmod a+x
sollten Sie Programme beginnen, die mit einem Shebang beginnen #!/bin/bash
mit
bash file.sh
nicht
sh file.sh
auch wenn sh ein symbolischer Link zu /bin/bash ist.
Die Shell prüft, wie sie aufgerufen wurde, und kann so aufgerufen werden, sh
dass sie in einem kompatiblen Modus agiert. Daher kann es sein, dass sie einige Bashismen nicht verarbeiten kann, was bei einem Aufruf als funktionieren würde bash file.sh
.
Das war nicht Ihr Problem, könnte aber zu einem werden, wenn Sie diesen subtilen Unterschied nicht kennen.