Причина наличия истории всех мест, где bash имеет историю (и записывает в нее ), заключается в том, что вы пишете в файл (history -a )и все остальные bash оболочки также записывают в один и тот же файл.
Затем вы читаете все команды из файла (history -r )в память.
В качестве решения можно записать (новые )команды в файл (history -a ), но не читать полученный файл. Список команд в памяти будет принадлежать каждому запущенному экземпляру bash. У каждого экземпляра bash будет свой список команд. Все команды будут записаны в файл истории.
Используйте (в bashrc или аналогичный):
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
Есть 2 вопроса. Ошибка в случае 2 связана с тем, что в системе нет команды SIGINT. В ОП было
trap "SIGINT in inner, do graceful shutdown" SIGINT
но, вероятно, нужная команда была
trap "echo SIGINT in inner, do graceful shutdown" SIGINT
Другой вопрос заключается в том, почему вызывается функция перехвата внутренних скриптов, хотя это не так. Процесс сна убит, скрипт переходит на следующую строку.