Ja, die Verlaufserweiterung ist standardmäßig nur für interaktive Shells aktiviert.
Um es für ein Shell-Skript zu aktivieren, schreiben Sie:
set -H
Um es in einer interaktiven Shell zu deaktivieren, schreiben Sie:
set +H
Verwenden Sie den folgenden Code, um festzustellen, ob die Verlaufserweiterung derzeit aktiviert ist.
case $- in (*H*) echo enabled ;; (*) echo disabled ;; esac
Als ich anfing, eine Shell-Klasse zu unterrichten, habe ich das Handbuch ausgiebig durchgearbeitet, um herauszufinden, was eine "interaktive Shell" wirklich ist. Es ist eine Whirlpool-Frage, also lass mich dir Ärger ersparen:
Die Shell hat viele Optionen. Einige dieser Optionen werden auf unterschiedliche Weise initialisiert, wenn die Shell über ein steuerndes Terminal verfügt (oder wenn mit -i
bla bla, was auch immer begonnen wird, siehe unten).
ALLE Optionen der Shell können individuell geändert werden.
Eine "interaktive Shell" ist ein trügerischer Begriff, wenn Sie versuchen, ihn genau zu definieren. Es ist wirklich nur eine Sammlung von Optionseinstellungen.
Die Frage, welche Einstellungen eine Shell interaktiv machen oder nicht, kann nicht beantwortet werden. es wird lächerlich. Es ist genau die gleiche philosophische Frage wie das Schiff des Theseus .
Wenn Sie eine interaktive Shell starten, dann aber die Verlaufserweiterung deaktivieren, das --noediting
Flag verwenden, setzen --norc
, deaktivieren expand_aliases
usw. usw. In welchem Sinne ist die Shell dann interaktiv? Oder wann wird es nicht mehr interaktiv? Sie können diese Fragen nicht beantworten.
Die Wahrheit ist, dass "interaktiv" nur eine praktische Bezeichnung für eine Sammlung verschiedener Shell-Optionen ist. Ebenso "nicht interaktiv". Gleiche Sache; nur eine Sammlung von Verhaltensweisen, die jeweils einzeln geändert werden können.
Fazit: Die Shell verhält sich anders, wenn sie "interaktiv" gestartet wird, als wenn sie "nicht interaktiv" gestartet wird. Der Versuch, diese Begriffe nach dem Start genau zu definieren , ist dumm. Schauen Sie sich einfach jede einzelne Option der Shell an, um ihr Verhalten zu verstehen.
Ich hatte vergessen, dass ich zusätzlich zu meiner eigenen Recherche auf dieser Seite ausführlich darüber gepostet habe.