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 ist vielleicht einfach, erklärt aber nicht viel. Machen Sie sich keine Sorgen, ich werde die notwendigen Erläuterungen mit Beispielen durchführen, damit Sie verstehen, warum eine bestimmte Syntax im angegebenen Format verwendet wird, während ein Shell-Skript ausgeführt wird.
Ich werde dieses einzeilige Shell-Skript verwenden, um die Dinge so unkompliziert wie möglich zu machen:
[email protected]:~/Scripts$ cat hello.sh
echo "Hello World!"
Methode 1: Ausführen eines Shell-Skripts durch Übergeben der Datei als Argument an die Shell
Bei der ersten Methode wird der Name der Skriptdatei als Argument an die Shell übergeben.
Bedenkt, dass bash die Standard-Shell ist, können Sie ein Skript wie folgt ausführen:
bash hello.sh
Kennen Sie den Vorteil dieser Vorgehensweise? Ihr Skript benötigt nicht die Ausführungsberechtigung. Ziemlich praktisch für schnelle und einfache Aufgaben.
Ausführen eines Shell-Skripts Linux
Wenn Sie noch nicht vertraut sind, empfehle ich Ihnen, Lesen Sie meine ausführliche Anleitung zu Dateiberechtigungen in Linux.
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, beschwert sich diese über falsche Befehle.
Ausführen einer Textdatei als Skript
Bei diesem Ansatz, Sie haben explizit angegeben, dass Sie verwenden möchten bash als Dolmetscher für das Skript.
Shell ist nur ein Programm und bash ist eine Umsetzung davon. Es gibt andere solche Shell-Programme wie ksh, zsh, usw. Wenn Sie andere Shells installiert haben, können Sie diese auch anstelle von verwenden bash.
Für example, ich habe zsh installiert und damit das gleiche Skript ausgeführt:
Führen Sie das Shell-Skript mit Zsh aus .ugb-4037db6-wrapper.ugb-container__wrapper{border-radius:0px !important;padding-top:0 !important;padding-bottom:0 !important;background-color:#f1f1f1 !important}. ugb-4037db6-wrapper > .ugb-container__side{padding-top:35px !important;padding-bottom:35px !important}.ugb-4037db6-wrapper.ugb-container__wrapper:before{background-color:#f1f1f1 !important}. ugb-4037db6-content-wrapper > h1,.ugb-4037db6-content-wrapper > h2,.ugb-4037db6-content-wrapper > h3,.ugb-4037db6-content-wrapper > h4,.ugb-4037db6-content- wrapper > h5,.ugb-4037db6-content-wrapper > h6{color:#222222}.ugb-4037db6-content-wrapper > p,.ugb-4037db6-content-wrapper > ol li,.ugb-4037db6-content- Wrapper > ul li{color:#222222}
Empfohlene Lektüre:
.ugb-16406c5 .ugb-blog-posts__featured-image{border-radius:0px !important}.ugb-16406c5 .ugb-blog-posts__title a{color:#000000 !important}.ugb-16406c5 .ugb-blog-posts__title a:hover{color:#00b6ba !important}
So führen Sie mehrere Linux-Befehle gleichzeitig im Linux-Terminal aus [Essential Beginners Tip]
Methode 2: Führen Sie ein Shell-Skript aus, indem Sie seinen Pfad angeben
Die andere Methode zum Ausführen eines Shell-Skripts besteht darin, seinen Pfad anzugeben. Aber dafür muss Ihre Datei ausführbar sein. Andernfalls erhalten Sie den Fehler „Berechtigung verweigert“, wenn Sie versuchen, das Skript auszuführen.
Sie müssen also zuerst sicherstellen, dass Ihr Skript die Ausführungsberechtigung hat. Sie können benutze den chmod-Befehl um sich diese Erlaubnis wie folgt zu erteilen:
chmod u+x script.sh
Sobald Ihr Skript ausführbar ist, müssen Sie nur noch den Dateinamen zusammen mit seinem absoluter oder relativer Pfad. 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:
Ausführen des Shell-Skripts in einem anderen Verzeichnis
Das ./ vor dem Skript ist wichtig (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? Das liegt daran, dass Ihr Linux-System in einigen ausgewählten Verzeichnissen, die in der PATH-Variablen angegeben sind, nach ausführbaren Dateien sucht, die ausgeführt werden sollen.
Hier ist der Wert der PATH-Variablen für mein System:
[email protected]:~$ 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
Das bedeutet, dass jede Datei mit Ausführungsrechten in einem der folgenden Verzeichnisse von überall im System ausgeführt werden kann:
- /home/abhishek/.local/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /Behälter
- /usr/games
- /usr/local/games
- /schnappen/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 nur ihren Namen verwenden. Sehen Sie, der Befehl ls befindet sich im Verzeichnis /usr/bin.
Wenn Sie das Skript OHNE den absoluten oder relativen Pfad angeben, kann es in den Verzeichnissen, die in der PATH-Variablen angegeben sind, nicht gefunden werden.
Warum die meisten Shell-Skripte # enthalten! /Behälter/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 das #! /Behälter/bash, geben Sie an, dass das Skript mit ausgeführt werden soll bash als Dolmetscher. Wenn Sie dies nicht tun und ein Skript in ./script.sh-Manier ausführen, wird es normalerweise mit der von Ihnen ausgeführten Shell ausgeführt.
Ist es wichtig? Es könnte. Sehen Sie, der Großteil der Shell-Syntax ist in allen Shell-Typen üblich, aber einige können sich unterscheiden.
Für example, das Array-Verhalten ist anders in bash und zsh-Shells. In zsh beginnt der Array-Index bei 1 statt bei 0.
Bash gegen Zsh
Verwenden von #! /Behälter/bash zeigt an, dass das Skript bash Shell-Skript und sollte mit ausgeführt werden bash als Interpreter unabhängig von der Shell, die auf dem System verwendet wird. Wenn Sie 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 Platz zwischen #! /Behälter/bash ist egal. Sie können auch #!/bin/ verwenden.bash.
War es hilfreich?
Ich hoffe, dieser Artikel hat zu Ihrem Linux-Wissen beigetragen. Wenn Sie noch Fragen oder Anregungen haben, hinterlassen Sie bitte einen Kommentar.
Erfahrene Benutzer können diesen Artikel immer noch über Dinge auslesen, die ich verpasst habe. Das Problem bei solchen Anfängerthemen ist jedoch, dass es nicht einfach ist, die richtige Balance an Informationen zu finden und zu viele oder zu wenige Details zu vermeiden.
Bei Interesse am Lernen bash Skript, wir haben ein gesamte Bash-Anfängerserie auf unserer auf Systemadministratoren ausgerichteten Website Linux-Handbuch. Wenn du möchtest, kannst du auch Erwerben Sie das E-Book mit zusätzlichen Übungen zur Unterstützung des Linux-Handbuchs.