Antworten:
$prompt: /path/to/scriptund drücken Sie die Eingabetaste. Beachten Sie, dass Sie sicherstellen müssen, dass das Skript über Ausführungsberechtigungen verfügt.
/path/to Verzeichnis befinden, z. B. mit dem cd /path/toBefehl, können Sie eingeben ./script, um Ihr Skript auszuführen. Vergessen Sie nicht, in diesem Fall das './' vor 'script'
Noch eine andere Möglichkeit, es auszuführen (diesmal ohne Festlegen von Ausführungsberechtigungen):
bash /path/to/scriptname
CD in das Verzeichnis, das das Skript enthält, oder legen Sie es in einem bin-Ordner ab, der sich in Ihrem $ PATH befindet
Geben Sie dann ein
./scriptname.sh
wenn im selben Verzeichnis oder
scriptname.sh
wenn es im bin-Ordner ist.
./scriptname.shfunktioniert bei mir aber scriptname.shgibt scriptname.sh: command not found. -rwxr-xr-xsind seine Berechtigungen.
cdirgendwo überhaupt führt zu einem weiteren häufigen Missverständnis für Anfänger. Sofern das Skript nicht intern Abhängigkeiten aufweist, für die es in einem bestimmten Verzeichnis ausgeführt werden muss (z. B. das Lesen einer Datendatei, auf die das Skript unerklärlicherweise keine Option zum Verweisen bietet), sollten Sie es niemals cdirgendwo ausführen müssen, und zwar sehr wird oft nicht wollen.
Du könntest es tun:
sh scriptname.sh
shes sich um einen Symlink bashhandelt oder wenn das Skript kein Bash-spezifisches Konstrukt verwendet. Im ersteren Fall ist die Verwendung von bashanstelle von shdie einzig richtige, tragbare Lösung. Im letzteren Fall ist dies nicht die richtige Antwort auf diese spezielle Frage, da das OP speziell nach Ratschlägen für ein Bash-Skript gefragt hat. Die falsche Antwort zu geben ist unverantwortlich; Benutzer, die den Unterschied nicht verstehen, posten häufig hier und müssen gezeigt werden, warum diese Antwort "für mich funktioniert" für sie nicht funktioniert hat.
Zunächst müssen Sie es ausführbar machen mit : chmod +x name_of_your_file_script.
Nachdem Sie es ausführbar gemacht haben, können Sie es mit ausführen ./same_name_of_your_file_script
Ändern Sie Ihr Verzeichnis mithilfe von CD in das Verzeichnis, in dem sich das Skript befindet Befehls Speicherort des
Geben Sie dann ein
bash program-name.sh
cdirgendwo; Sie können einen beliebig komplexen Pfadnamen als Argument für angeben bash. In der Tat funktioniert jedes Programm, das ein Dateinamenargument verwendet, auf diese Weise (oder ist erschreckend, geistesgestört kaputt).
Dies ist ein alter Thread, aber ich bin darauf gestoßen und bin überrascht, dass noch niemand eine vollständige Antwort gegeben hat. Also los geht's ...
F: Wie führe ich dies im Terminal aus?
Verwirrungen und Konflikte:
sudoirgendetwas davon zu tun. Dieser Befehl ist für die Ausführung von Befehlen als anderer Benutzer oder als Root-Benutzer (Administrator) reserviert. Toller Beitrag hier .(Eine Person, die gerade das Ausführen von Skripten lernt, sollte diesen Befehl nur verwenden, wenn ein wirklicher Bedarf besteht, z. B. die Installation eines neuen Programms. Ein guter Ort zum Ablegen Ihrer Skripte befindet sich in Ihrem Ordner ~ / bin Eingabe cd ~/binoder cd $HOME/binüber die Terminal-Eingabeaufforderung. Sie haben die vollständigen Berechtigungen in diesem Ordner.)
Um dieses Skript vom Terminal auf einem System vom Typ Unix / Linux auszuführen, müssen Sie drei Dinge tun:
Teilen Sie dem System den Speicherort des Skripts mit. (wähle eins)
/path/to/script.sh. B. ). Sie können den vollständigen Pfad überprüfen, indem Sie pwdoder echo $PWDin das Terminal eingeben ../für den Pfad verwenden (z ./script.sh. B. ). Einfach.PATHund geben Sie einfach den Namen ein (z script.sh. B. ). Sie können das System überprüfen, PATHindem Sie eingeben echo $PATHoder echo -e ${PATH//:/\\n}eine übersichtlichere Liste wünschen.Teilen Sie dem System mit, dass das Skript zur Ausführung berechtigt ist. (wähle eins)
chmod +x /path/to/script.shdas Terminal eingeben .chmod 755 /path/to/script.shwenn Sie Zahlen bevorzugen. Es gibt eine große Diskussion mit einem kühlen Chart hier .Teilen Sie dem System die Art des Skripts mit. (wähle eins)
BASH /path/to/script.shoder PHP /path/to/script.php) Wenn das Skript eine Erweiterung wie .php oder .py hat, ist es Teil des Skriptnamens und Sie müssen es einschließen.#!/bin/bashin Ihrem Beispiel haben ( ). Wenn Sie dies als erste Zeile Ihres Skripts haben, verwendet das System dieses Programm, um das Skript auszuführen. Sie müssen keine Programme eingeben oder Erweiterungen verwenden.PATH, #!/usr/bin/envgefolgt vom Programmnamen (z . B. #!/usr/bin/env bashoder #!/usr/bin/env python3). Es gibt Vor- und Nachteile, die hier ausführlich besprochen werden .script.shund script.phpsind die wörtlichen Dateinamen dieser Skripte, und wenn Sie eine Erweiterung in den Dateinamen einfügen, müssen Sie diese beim Ausführen des Skripts einschließen (und umgekehrt; wenn das Skript dies nicht tut). keine Erweiterung haben, keine setzen). Dies ist anders als z. B. unter DOS, wo Sie den .batoder .exeaus dem Dateinamen weglassen können und Dateien eine Erweiterung aus einem kleinen Satz benötigen, um als ausführbar zu gelten.
Wenn Sie sich in einem Verzeichnis oder Ordner befinden, in dem die Skriptdatei verfügbar ist, ändern Sie einfach die Dateiberechtigung im ausführbaren Modus
chmod +x your_filename.sh
Danach führen Sie das Skript mit dem folgenden Befehl aus.
$ sudo ./your_filename.sh
Über "." repräsentieren das aktuelle Verzeichnis. Hinweis! Wenn Sie sich nicht in dem Verzeichnis befinden, in dem sich die Bash-Skriptdatei befindet, ändern Sie das Verzeichnis, in dem sich die Datei befindet, mithilfe von
cd Directory_name/write the complete path
Befehl. Andernfalls kann Ihr Skript nicht ausgeführt werden.
sudoist es falsch und möglicherweise schrecklich falsch, wenn Sie es in einem nicht vertrauenswürdigen Skript verwenden, das die Kräfte missbraucht, die Sie ihm unnötig gegeben haben.
cdirgendwo ist schwer zu verstehen, aber wahrscheinlich auch falsch.
chmod +x scriptnameund dann./scriptname.