Bash Interpretator: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „ ==Der Interpretor in der Windowswelt== {| border=1 cellpadding="2" |- ! Endung ! Interpretor |- | .pl | Perl |- | .py | Python |- | .bat | command.com |- | .…“) |
(kein Unterschied)
|
Aktuelle Version vom 6. Juni 2024, 07:49 Uhr
Der Interpretor in der Windowswelt
| Endung | Interpretor |
|---|---|
| .pl | Perl |
| .py | Python |
| .bat | command.com |
| .cmd | cmd.exe |
Der Interpretor in der Linuxwelt
Unter Unix/Linux entscheidet nicht die Suffix welchem Interpretor ein Skript übergeben wird, da ja in der Regel keine Suffix vorhanden ist. Die Art wird durch die Datei bestimmt, und zwar durch die ersten Bytes einer Datei. Wenn wir unser Skript mit
- file skript
skript: ASCII text
untersuchen sehen wir, dass es als normaler ASCII Text interpretiert wird. Bei einem Programmaufruf wird es einfach der aktuellen Shell übergeben (es gibt ausser der bash noch andere Shells z.B. bourne-shell (bsh), korn-shell (ksh), ash). Um sicherzugehen, dass es der richtigen Shell übergeben wird, fuegt man an den Skriptanfang einfach ein #! an, in unserem Fall ein #!/bin/bash für die Bourne-Again Shell. Das bedeutet ,dass das Programm welches hinter dem #! (Gobang Operator) steht der Interpretor ist, dem das Skript übergeben wird.
#!/bin/bash date hostname pwd
Selbst in der C shell ist somit sichergestellt ,dass das Skript der Bash übergeben wird
- file skript
skript: Bourne-Again shell script text executable
Ablauf eines Shell-Skriptes
- Starten einer Subshell
- Lesen der Skriptdatei von der Subshell (zeilenweise)
- Kommandos werden nacheinander abgearbeitet
Beenden der Subshell und Rückkehr zur aufrufenden Shell
Möglichkeiten ein Shellskript aufzurufen
bash skript (r)
- Starten einer Subshell
- Lesen der Skriptdatei von der Subshell
- Kommandos werden nacheinander abgearbeitet
- Beenden der Subshell und Rückkehr zur aufrufenden Shell
(Die Shell, die das Skript abarbeitet, kennt den Namen des Shellskriptes)
bash < skript (r)
- Starten einer Subshell
- Lesen der Skriptdatei von der Subshell
- Kommandos werden nacheinander abgearbeitet
- Beenden der Subshell und Rückkehr zur aufrufenden Shell
(Die Shell, die das Skript abarbeitet, kennt den Namen des Shellskriptes nicht)
./skript (rx)
- Starten einer Subshell
- Lesen der Skriptdatei von der Subshell
- Kommandos werden nacheinander abgearbeitet
- Beenden der Subshell und Rückkehr zur aufrufenden Shell
(Die Shell, die das Skript abarbeitet, kennt den Namen des Shellskriptes, es muss zusätzlich das Ausführungsrecht gesetzt sein.)
exec ./skript (rx)
- Die Subshell ersetzt die aktuelle Shell (überlädt die aktuelle Shell)
- Lesen der Skriptdatei von der Subshell
- Kommandos werden nacheinander abgearbeitet
- Beenden der Subshell; danach ist der Prozess der aufrufenden Shell beendet.
source skript oder . skript (r)
- Lesen der Skriptdatei von der aktuellen Shell
- Der interaktive Modus der aktuellen Shell wird „unterbrochen“
- Kommandos werden nacheinander abgearbeitet
(Es wird kein neuer Prozess gestartet; Variablen haben in dieser Shell Gültigkeit)