Иногда достаточно прочитать man bash
:
FUNCNAME
Массивная переменная, содержащая имена всех функций shell функций, находящихся в настоящее время в стеке вызовов выполнения. Элемент элемент с индексом 0 - это имя любой исполняемой в данный момент функции оболочки. Самый нижний элемент (с наибольшим индексом) - это "main". Эта переменная существует только тогда, когда функция оболочки выполняется. Присвоение переменной FUNC- NAME не имеет никакого эффекта и возвращают статус ошибки. Если переменная FUNCNAME не установлена, она теряет свои особые свойства, даже если впоследствии она будет сброшено.
Пример использования:
#!/usr/bin/env bash
func()
{
echo I am inside "$FUNCNAME"
}
foo()
{
echo I am inside "$FUNCNAME"
}
func
foo