Ich beschäftige mich immer noch mit einem Fehler voneine andere Fragedas unbeantwortet blieb, weil ich keine Debuginformationen erhalten kann.
Ich habe Skripte, die andere Skripte ausführen, und ich muss sehen, wie die Verbindung des TTY zum Terminal getrennt wird.
Gibt es eine Möglichkeit, „-x“ global festzulegen? Ich kann es im Problemskript nicht festlegen, da es dynamisch generiert wird und nicht von mir, aber ich würde gerne sehen, was damit nicht stimmt.
Antwort1
Bash mit festgelegter Shell-Option aufrufen
Entsprechend derBash aufrufenAbschnitt des Bash-Handbuchs,
Alle Einzelzeichenoptionen, die mit dem integrierten Set-Befehl verwendet werden (siehe Das integrierte Set-Befehl), können als Optionen verwendet werden, wenn die Shell aufgerufen wird.
xtrace
Das bedeutet, dass Sie ein Bash-Skript mit der gesetzten Option ausführen können, indem Sie es direkt bash
mit der -x
Option und dem Dateinamen des Skripts als Argument aufrufen, z. B.
bash -x /path/to/script
Konfigurieren Sie die Shell-Option für alle Shell-Skripte
Wenn Sie „global“ sagen, nehme ich an, dass Sie die xtrace
Option für alle nicht interaktiven Aufrufe von Bash festlegen möchten. Legen Sie dazu die BASH_ENV
Umgebungsvariable auf einen geeigneten Dateinamen fest und erstellen Sie dann diese Datei mit set -x
folgendem Inhalt:
export BASH_ENV=~/.bash_env
echo set -x > ~/.bash_env
Aus der Manpage:
Wenn Bash nicht-interaktiv gestartet wird, um beispielsweise ein Shell-Skript auszuführen, sucht es
BASH_ENV
in der Umgebung nach der Variablen, erweitert ihren Wert, wenn er dort erscheint, und verwendet den erweiterten Wert als Namen einer zu lesenden und auszuführenden Datei.