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 -e
irgendwo ein Bash-Skript eingefügt habe, das meine Terminalquellen enthält.
Ich habe .bash_profile
/ .bashrc
/ überprüft .profile
und es sieht nicht so aus, als ob set -e
es da drin wäre.
Gibt es noch andere offensichtliche Schuldige?
Antwort1
Also gut, es war tatsächlich ein Eigensinn, set -e
der meine Schwierigkeiten verursacht hat.
set -e
Ich 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 -e
kö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 -e
befand 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 +e
in Ihre .bashrc
— zumindestEnde.
Sie können graben – es gibt viele andere Stellen, wo eins set -e
sein könnte – aber damit ist das Ganze erledigt.
Wenn es jedoch set -e
Teil Ihres ist , $PROMPT_COMMAND
funktioniert das oben genannte nicht. Probieren Sie es aus printf '%s\n' "$PROMPT_COMMAND"
und sehen Sie, was darin steht.
Antwort3
In meinem Fall set -e
war es in keinem meiner Bash-Startups und das Anhängen set +e
an meins .bashrc
hat das Problem nicht behoben.
Es stellte sich heraus, dass es set -e
sich 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.sh
damit 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.sh
vermeide ich das frustrierende „Bash Roulette“-Szenario.