Вопрос: можно ли сделать так, чтобы в баше тоже была своя сессия (или как ?), чтобы при убивании главного процесса ИЛИ баша , падало CMD следом за ними?
Проблема в том, что вы используете "костыли" для создания дочерних процессов. Используйте системный вызов fork напрямую в своем коде, а не делегируйте это bash.
А вообще, обратите внимание на сисколы setpgid и setpgrp. Можно BASH вынести в отдельную группу, и тогда завершение работы как MAIN так и BASH (с помощью сигнала) приведет к завершению CMD. В первом случае будут завершены все дочерние процессы, т.к. прекратит работу лидер сессии MAIN. Во втором случае будут завершены BASH и CMD, т.к. являются членами одной группы, отличной от группы MAIN. Надеюсь, что понятно изложил свои мысли.