So legen Sie -x für andere Skripte als meine eigenen fest

So legen Sie -x für andere Skripte als meine eigenen fest

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.

xtraceDas bedeutet, dass Sie ein Bash-Skript mit der gesetzten Option ausführen können, indem Sie es direkt bashmit der -xOption 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 xtraceOption für alle nicht interaktiven Aufrufe von Bash festlegen möchten. Legen Sie dazu die BASH_ENVUmgebungsvariable auf einen geeigneten Dateinamen fest und erstellen Sie dann diese Datei mit set -xfolgendem 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_ENVin 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.

verwandte Informationen