Jeder Befehl in meinem Terminal, der mit einem Code ungleich Null beendet wird, schließt mein Terminalfenster

Jeder Befehl in meinem Terminal, der mit einem Code ungleich Null beendet wird, schließt mein Terminalfenster

Anfangs war das ein bisschen lustig, wie "Bash Roulette" spielen ... aber jetzt wird es langweilig, lol

Jeder Befehl in meinem Terminal, der mit einem Code ungleich Null beendet wird, schließt mein Terminalfenster

Mir wurde gesagt, dass ich vielleicht set -eirgendwo ein Bash-Skript eingefügt habe, das meine Terminalquellen enthält.

Ich habe .bash_profile/ .bashrc/ überprüft .profileund es sieht nicht so aus, als ob set -ees da drin wäre.

Gibt es noch andere offensichtliche Schuldige?

Antwort1

Also gut, es war tatsächlich ein Eigensinn, set -eder meine Schwierigkeiten verursacht hat.

set -eIch habe es gefunden , indem ichbash -lx

Am besten verwenden Sie:

bash -lx > lx.log 2>&1

Öffnen Sie dann die Protokolldatei und suchen Sie nach set

Sobald Sie diesen Fehler gefunden haben, set -ekönnen Sie die Zeile entfernen und das Problem sollte behoben sein! (Ein Neustart des Computers wäre allerdings möglicherweise eine gute Idee).

In meinem Fall set -ebefand es sich in einer Datei mit .bash_profile-Quellen, aber die Zeile war nicht in .bash_profile selbst.

Antwort2

Wenn Sie das Problem einfach nur lösen wollen, schließen Sie set +ein Ihre .bashrc— zumindestEnde.

Sie können graben – es gibt viele andere Stellen, wo eins set -esein könnte – aber damit ist das Ganze erledigt.

Wenn es jedoch set -eTeil Ihres ist , $PROMPT_COMMANDfunktioniert das oben genannte nicht. Probieren Sie es aus printf '%s\n' "$PROMPT_COMMAND"und sehen Sie, was darin steht.

Antwort3

In meinem Fall set -ewar es in keinem meiner Bash-Startups und das Anhängen set +ean meins .bashrchat das Problem nicht behoben.

Es stellte sich heraus, dass es set -esich um ein Bash-Skript handelte, das ich häufig für mein Projekt ausführe, und ich habe dieses Skript ausgeführt, . ./my-dev-script.shdamit esehre meine Bash-Aliase.

Was mir nicht klar war: Wenn ich es mit diesem Extra .davor ausführte, wurden die Bash-Optionen im Skript auch in alle meine regulären Terminalsitzungen übernommen.

Ich brauche eine neue Lösung zum Ausführen eines Bash-Skripts, das meine persönlichen Bash-Aliase berücksichtigt, aber zumindest habe ich die Quelle des Schurken gefunden set -e. Wenn ich es einfach normal ausführe, ./my-dev-script.shvermeide ich das frustrierende „Bash Roulette“-Szenario.

verwandte Informationen