Wenn Sie xfce4-trminal
oder gnome-terminal
(oder ein anderes Terminal) öffnen, befindet sich Ihre Shell im interaktiven Modus. Jedes Skript wird im interaktiven Modus ausgeführt.
Wenn Sie script.sh
durchlaufen
xfce4-terminal -H -x script.sh
oder
gnome-terminal -x script.sh
oder ein anderes Terminal: Ihre Shell befindet sich im nicht interaktiven Modus.
Skripts können mit der -i
Option oder mit einer #!/bin/bash -i
Kopfzeile zur Ausführung im interaktiven Modus gezwungen werden . Beachten Sie, dass dies zu unregelmäßigem Skriptverhalten oder Fehlernachrichten führen kann, auch wenn kein Fehler vorliegt.
Was ist set -m
? Es ist Überwachungsmodus . Hintergrundprozesse laufen in einer separaten Prozessgruppe ab und eine Zeile mit ihrem Beendigungsstatus wird nach deren Abschluss gedruckt. Sie ist standardmäßig für interaktive Shells aktiviert.
Was ist set -o
? Die aktuellen Einstellungen der Optionen werden in einem nicht festgelegten Format in die Standardausgabe geschrieben.
Warum set -o
funktioniert das?
Die Option -o wurde aus der KornShell übernommen, um die Anforderungen der Benutzer zu erfüllen. Zusätzlich zu seiner allgemein benutzerfreundlichen Benutzeroberfläche ist -o erforderlich, um den vi-Befehlszeilen-Bearbeitungsmodus bereitzustellen, für den die historische Praxis keinen Ein-Buchstaben-Optionsnamen liefert. (Obwohl es möglich gewesen wäre, einen solchen Brief zu erfinden, wurde erkannt, dass andere Bearbeitungsmodi entwickelt werden würden und -o genügend Namensraum für die Beschreibung solcher Erweiterungen bietet.)
Historische Implementierungen sind in dem Format, das für -o Optionsstatusberichte verwendet wird, inkonsistent. Das + o-Format ohne Optionsargument wurde hinzugefügt, um den tragbaren Zugriff auf die Optionen zu ermöglichen, die gespeichert und später beispielsweise mit einem Punktskript wiederhergestellt werden können.
Wie auch immer, set -m
wird bevorzugt.