Любая команда в моем терминале, которая завершается с ненулевым кодом, закрывает мое окно терминала.

Любая команда в моем терминале, которая завершается с ненулевым кодом, закрывает мое окно терминала.

Сначала это было немного забавно, как игра в «Bash Roulette»… но теперь это надоело, лол.

Любая команда в моем терминале, которая завершается с ненулевым кодом, закрывает мое окно терминала.

Мне сказали, что, возможно, я set -eустановил где-то какой-то скрипт bash, который использует мой терминал.

Я проверил .bash_profile/ .bashrc/ .profileи, похоже, его set -eтам нет.

Есть ли еще какие-то очевидные виновники?

решение1

Ну ладно, действительно, именно непутевый человек стал set -eпричиной моих неприятностей.

Я нашел способ, которым set -eиспользовалbash -lx

Лучше всего использовать:

bash -lx > lx.log 2>&1

затем откройте этот файл журнала и выполните поиск set...

как только вы обнаружите, что что-то не так, set -eвы можете удалить эту линию, и ваша проблема должна исчезнуть! (Хотя перезагрузка компьютера может быть хорошей идеей).

В моем случае строка set -eнаходилась в файле, который является источником .bash_profile, но в самом .bash_profile ее не было.

решение2

Если вы просто хотите решить проблему, включите set +eв свой .bashrc— вконец.

Вы можете заняться раскопками — есть много других мест, где set -eможет быть , — но это решит все проблемы.

Однако, если set -eэто часть вашего, $PROMPT_COMMANDто вышесказанное не сработает. Попробуйте printf '%s\n' "$PROMPT_COMMAND"и посмотрите, что в нем.

решение3

В моем случае set -eне было ни в одном из моих запусков bash, и добавление set +eк моему файлу .bashrcне исправило ситуацию.

Оказывается, это set -eбыл скрипт bash, который я часто запускаю для своего проекта, и я запускал этот скрипт, используя . ./my-dev-script.shего, чтобы онуважайте мои псевдонимы bash.

Чего я не осознавал, так это то, что запуск его с этим дополнительным параметром .в начале также приводил к тому, что параметры bash в скрипте переносились во все мои обычные сеансы работы в терминале.

Мне нужно новое решение для запуска скрипта bash, который будет учитывать мои личные псевдонимы bash, но, по крайней мере, я нашел источник мошеннического set -e. Простой запуск его в обычном режиме с помощью ./my-dev-script.shпредотвращает раздражающий сценарий "Bash Roulette".

Связанный контент