Antworten:
$prompt: /path/to/script
und 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/to
Befehl, 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.sh
funktioniert bei mir aber scriptname.sh
gibt scriptname.sh: command not found
. -rwxr-xr-x
sind seine Berechtigungen.
cd
irgendwo ü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 cd
irgendwo ausführen müssen, und zwar sehr wird oft nicht wollen.
Du könntest es tun:
sh scriptname.sh
sh
es sich um einen Symlink bash
handelt oder wenn das Skript kein Bash-spezifisches Konstrukt verwendet. Im ersteren Fall ist die Verwendung von bash
anstelle von sh
die 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
cd
irgendwo; 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:
sudo
irgendetwas 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 ~/bin
oder 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 pwd
oder echo $PWD
in das Terminal eingeben ../
für den Pfad verwenden (z ./script.sh
. B. ). Einfach.PATH
und geben Sie einfach den Namen ein (z script.sh
. B. ). Sie können das System überprüfen, PATH
indem Sie eingeben echo $PATH
oder 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.sh
das Terminal eingeben .chmod 755 /path/to/script.sh
wenn 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.sh
oder 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/bash
in 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/env
gefolgt vom Programmnamen (z . B. #!/usr/bin/env bash
oder #!/usr/bin/env python3
). Es gibt Vor- und Nachteile, die hier ausführlich besprochen werden .script.sh
und script.php
sind 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 .bat
oder .exe
aus 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.
sudo
ist 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.
cd
irgendwo ist schwer zu verstehen, aber wahrscheinlich auch falsch.
chmod +x scriptname
und dann./scriptname
.