Antworten:
Ihr Terminal führt (höchstwahrscheinlich bash
) eine Shell aus , die nach Ihren Befehlen fragt und diese ausführt.
Neben diesem interaktiven Modus können Sie mit Ihrer Shell auch Befehle aus einer Datei ausführen. Um die Befehle in Ihrer Datei auszuführen, können Sie entweder die Shell direkt aufrufen bash script
oder Ihre Datei mit einem "shebang" starten #!/bin/bash
und ausführbar machen ( chmod +x script
). Dann können Sie das Skript wie eine Binärdatei behandeln und es beispielsweise wie ./script
folgt ausführen oder an einer Stelle ablegen, an der Ihre Shell danach sucht. ( echo $PATH
)
Höchstwahrscheinlich ist sowohl Ihre interaktive Shell als auch die zum Ausführen verwendete Shell bash
. Aus der Sicht eines "first day learning linux" funktioniert bash in beiden Modi genau gleich. - Viel später könnten Sie über geringfügige Unterschiede stolpern. Wenn Sie wirklich detaillierte Informationen benötigen, empfehle ich Ihnen, man bash
nach Orten zu suchen, in denen "interaktiv" vorkommt. (Sie können eine Manpage durchsuchen, indem Sie drücken /
.)
Eine wichtige Anmerkung ist, dass das Skript als neuer Prozess ausgeführt wird. Dies bedeutet insbesondere, dass im Skript gesetzte Variablen in der aufrufenden Shell nicht sichtbar sind.
$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$
Ohne den Export a
ist nicht einmal das innere Skript sichtbar.
Im Allgemeinen würde die Antwort "nein" lauten, Befehle in der Shell sind in Skripten, in der Syntax und in der Semantik identisch.
Es gibt jedoch eine Reihe kleiner Nuancen in Bezug auf die Konfiguration der Umgebung (welche Variablen werden verwendet und welche festgelegt).
die interaktive Shell für Linux ist bash, aber Scripting verwendet häufig andere Dolmetscher ( sh
, die ein Vorgänger von ist bash
, ksh
, die auf einer Stufe mit bash ist), so dass Sie zu berücksichtigen haben , welche Shell benutzt wird (das aktuell Shell Namen wird traditionell in Variable gehalten SHELL
, versuchen Sie es mit der Eingabe echo $SHELL
).
Möglicherweise gibt es Unterschiede in der Konfiguration desselben Interpreters für die interaktive Sitzung und für die Skriptausführung.
Nein. Ein Skript ist eine Liste von Befehlen, die Sie im Terminal eingeben können.
Sie können die Gesamtheit eines Skripts in das Terminal einfügen. Das Ergebnis entspricht dem Ausführen des Skripts.
Umgekehrt können Sie Ihre Terminalbefehle in einer Datei "speichern" und in ein wiederverwendbares Skript verwandeln und mit Ihrer Familie und Freunden teilen.
source script_file
. Hiermit werden die ENV-Variablen im aktuellen Kontext bearbeitet. Wenn Sie das Skript ./script_file
ausführen, ändert as nicht die ENV, es export
sei denn, dies wird explizit verwendet.
export
kann ein Skript keine Variablen der aufrufenden Shell ändern. Gleiches gilt für Dinge wie PWD, definierte Aliase, Funktionen und ähnliches. Sie können nur interaktiv oder durch Beschaffung einer Datei geändert werden. Aber ja, das ist wahrscheinlich nichts, worüber jemand am ersten Tag stolpern wird. :)