Да, должно. Будет это или нет - решать утилите.
Файлы и соединения обычно закрываются при выходе из программы по любой причине, однако «другая работа» может быть оставлена наполовину (временные файлы могут быть оставлены, базы данных могут находиться в сомнительном состоянии, данные на самом деле не записанные в файлы будут потеряны и т. д.)
Программа может поймать сигнал TERM
в обработчике сигнала и корректно выйти из , т.е. завершить все, что она делала, и выйти из мир в упорядоченном состоянии после фактического прекращения. Он также может улавливать и полностью игнорировать сигнал.
Возможно ли, что история записывается только с одного экземпляра bash?
Примерно так и происходит. История работает в bash следующим образом, если только вы не приложили значительных усилий для ее изменения:
Теперь предположим, что вы запускаете два экземпляра bash. Оба загружают файл истории при запуске. Оба добавляют команды, которые они запускают, в свою собственную историю. Когда один экземпляр выходит, он сохраняет старую историю плюс свои собственные команды в файле истории. Когда второй экземпляр выходит, он сохраняет старую историю плюс свою собственную команду в файле истории — и при этом стирает историю из первого завершившегося экземпляра.
Механизм сохранения истории в Bash слишком упрощен. Ваши строки истории находятся во власти всех остальных запущенных экземпляров — тот, кто вышел последним, стирает историю остальных. Решения включают добавление новой истории в файл истории вместо перезаписи файла истории всей историей в памяти или добавление строк в файл истории сразу после их выполнения. См. Сохранение истории bash в нескольких окнах терминала и Сохранение истории bash в нескольких окнах терминала, чтобы узнать о некоторых способах реализации этого и других вариантов.
Самое простое решение — запустить zsh, который по умолчанию сохраняет историю разумным образом.Я рекомендую это, особенно если вы используете macOS, которая застряла на старой версии bash, потому что Apple не нравится лицензия версий, выпущенных с 2009 года.