Ist es möglich, in diesem Beispiel ein Skript aufzurufen, das hey.sh
nach jedem Bash-Befehl benannt ist?
Zum Beispiel tippen Sie ls
die Eingabetaste und ls wird ausgeführt, dann wird hey.sh
ausgeführt.
Sie geben dann cd ..
(oder einen anderen Befehl) ein , cd wird ausgeführt und dann wird hey.sh
ausgeführt und so weiter.
Antworten:
Hinweis: Umgebungsvariablen vs Shell-Variablen
In der Standardeinstellung
PROMPT_COMMAND
ist nicht eine Umgebungsvariable . Es ist nur eine Shell-Variable .Auf beide Variablentypen wird auf dieselbe Weise zugegriffen (
"$variable*"
), Umgebungsvariablen werden jedoch von untergeordneten Prozessen geerbt, Shell-Variablen hingegen nicht.Die Konvention besteht darin, Umgebungsvariablen + Shell-Variablen, die Ihre Shell konfigurieren, in Großbuchstaben zu setzen (PROMPT_COMMAND konfiguriert Ihre Shell), andere Variablentypen jedoch in Kleinbuchstaben.
In bash können Sie Folgendes tun:
declare -p
um herauszufinden, ob eine Variable exportiert wird (= ist eine Umgebungsvariable) oder nicht:quelle
export
es. Legen Sie es einfach fest (oder hängen Sie es an, z. B. wie oben gezeigt).