Конечно, утомительно, но, похоже, это можно сделать с помощью существующей информации о стеке вызовов, предоставленной Bash.
Вот как.
Продолжайте выполнять обработчик ловушек DEBUG
, пока не достигнете следующегофрейм callstack, F2, расположенный прямо под текущим, F1, и остановка на номере строки, который больше или равен BASH_LINENO
, сохраненному в F2.Проверка '... или равно' необходима для рекурсивных вызовов.