Es gibt zwei Möglichkeiten, ein Shell-Skript unter Linux auszuführen. Sie können verwenden:
bash script.sh
Oder Sie können das Shell-Skript wie folgt ausführen:
./script.sh
Das mag einfach sein, erklärt aber nicht viel. Keine Sorge, ich werde die notwendigen Erklärungen mit Beispielen machen, damit Sie verstehen, warum eine bestimmte Syntax im angegebenen Format verwendet wird, während Sie ein Shell-Skript ausführen.
Ich werde dieses einzeilige Shell-Skript verwenden, um die Dinge so unkompliziert wie möglich zu gestalten:
:~/Scripts$ cat hello.sh echo "Hello World!"
Methode 1: Ausführen eines Shell-Skripts durch Übergeben der Datei als Argument an shell
Bei der ersten Methode wird der Name der Skriptdatei als Argument an die Shell übergeben.
Da bash die Standard-Shell ist, können Sie ein Skript wie folgt ausführen:
bash hello.sh
Kennen Sie den Vorteil dieses Ansatzes? Ihr Skript muss nicht über die Ausführungsberechtigung verfügen. Ziemlich praktisch für schnelle und einfache Aufgaben.
Wenn Sie noch nicht vertraut sind, empfehle ich Ihnen, meine ausführliche Anleitung zur Dateiberechtigung unter Linux zu lesen.
Denken Sie daran, dass es sich um ein Shell-Skript handeln muss, das Sie als Argument übergeben. Ein Shell-Skript besteht aus Befehlen. Wenn Sie eine normale Textdatei verwenden, werden falsche Befehle angezeigt.
Bei diesem Ansatz haben Sie explizit angegeben, dass Sie bash als Interpreter für das Skript verwenden möchten.
Shell ist nur ein Programm und bash ist eine Implementierung davon. Es gibt andere solche Shells Programm wie ksh, zsh, etc. Wenn Sie andere Shells installiert haben, können Sie diese auch anstelle von bash verwenden.
Zum Beispiel habe ich zsh installiert und damit dasselbe Skript ausgeführt:
Empfohlene Lektüre:
Methode 2: Ausführen eines Shell-Skripts durch Angabe des Pfads
Die andere Methode zum Ausführen eines Shell-Skripts besteht darin, den Pfad anzugeben. Damit dies jedoch möglich ist, muss Ihre Datei ausführbar sein. Andernfalls wird der Fehler „Berechtigung verweigert“ angezeigt, wenn Sie versuchen, das Skript auszuführen.
Zuerst müssen Sie also sicherstellen, dass Ihr Skript über die Ausführungsberechtigung verfügt. Sie können den Befehl chmod verwenden, um sich diese Berechtigung wie folgt zu erteilen:
chmod u+x script.sh
Sobald Ihr Skript ausführbar ist, müssen Sie nur noch den Dateinamen zusammen mit dem absoluten oder relativen Pfad eingeben. Meistens befinden Sie sich im selben Verzeichnis, also verwenden Sie es einfach so:
./script.sh
Wenn Sie sich nicht im selben Verzeichnis wie Ihr Skript befinden, können Sie den absoluten oder relativen Pfad zum Skript angeben:
Das ./ bevor das Skript wichtig ist (wenn Sie sich im selben Verzeichnis wie das Skript befinden)
Warum können Sie den Skriptnamen nicht verwenden, wenn Sie sich im selben Verzeichnis befinden? Dies liegt daran, dass Ihr Linux-System nach ausführbaren Dateien sucht, die in einigen ausgewählten Verzeichnissen ausgeführt werden sollen, die in der PATH-Variablen angegeben sind.
Hier ist der Wert der Pfadvariablen für mein System:
:~$ echo $PATH/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Dies bedeutet, dass jede Datei mit Ausführungsberechtigungen in einem der folgenden Verzeichnisse von überall im System ausgeführt werden kann:
- / startseite/abhishek/.lokal/bin
- /usr/lokal/sbin
- /usr/lokal/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/Spiele
- /usr/local/games
- /snap/bin
Die Binärdateien oder ausführbaren Dateien für Linux-Befehle wie ls, cat usw. befinden sich in einem dieser Verzeichnisse. Aus diesem Grund können Sie diese Befehle von überall auf Ihrem System ausführen, indem Sie einfach ihre Namen verwenden. Siehe, der Befehl ls befindet sich im Verzeichnis /usr/bin.
Wenn Sie das Skript OHNE den absoluten oder relativen Pfad angeben, kann es es nicht in den in der PATH-Variablen genannten Verzeichnissen finden.
Warum die meisten Shell-Skripte #! /bin/bash am Anfang der Shell-Skripte?
Denken Sie daran, wie ich erwähnt habe, dass Shell nur ein Programm ist und es verschiedene Implementierungen von Shells gibt.
Wenn Sie die #! /bin / bash , Sie geben an, dass das Skript mit bash als Interpreter ausgeführt werden soll. Wenn Sie das nicht tun und ein Skript ausführen./Skript.auf diese Weise wird es normalerweise mit der Shell ausgeführt, die Sie ausführen.
Spielt das eine Rolle? Es könnte. Sehen Sie, der größte Teil der Shell-Syntax ist in allen Arten von Shell üblich, aber einige können sich unterscheiden.
Das Array-Verhalten unterscheidet sich beispielsweise in bash- und zsh-Shells. In zsh beginnt der Array-Index bei 1 anstelle von 0.
Mit #! / bin / bash gibt an, dass das Skript ein Bash-Shell-Skript ist und mit bash als Interpreter ausgeführt werden sollte, unabhängig von der Shell, die auf dem System verwendet wird. Wenn Sie eine zsh-spezifische Syntax verwenden, können Sie angeben, dass es sich um ein zsh-Skript handelt, indem Sie #! /bin/zsh als erste Zeile des Skripts.
Der Raum zwischen #! / bin / bash spielt keine Rolle. Sie können auch #!/bin/bash.
War es hilfreich?
Ich hoffe, dieser Artikel hat Ihr Linux-Wissen erweitert. Wenn Sie noch Fragen oder Anregungen haben, hinterlassen Sie bitte einen Kommentar.
Erfahrene Benutzer können diesen Artikel immer noch über Dinge, die ich verpasst habe, auswählen. Das Problem bei solchen Anfängerthemen ist jedoch, dass es nicht einfach ist, die richtige Balance zwischen Informationen zu finden und zu viele oder zu wenige Details zu vermeiden.
Wenn Sie daran interessiert sind, Bash-Skript zu lernen, haben wir eine ganze Bash-Anfängerserie auf unserer Sysadmin-fokussierten Website Linux Handbook. Wenn Sie möchten, können Sie auch das eBook mit zusätzlichen Übungen erwerben Linux-Handbuch zu unterstützen.
Gefällt dir, was du liest? Bitte teilen Sie es mit anderen.
- Facebook0
- Twitter49
- LinkedIn1
- Reddit0