Когда вы используете исходный код foo.sh, Ctrl + Z (SUSP) просто останавливает выполняющуюся в данный момент команду в foo.sh, и оболочка беспечно продолжает выполнение следующей команды в foo.sh.
Я не думаю, что есть способ обойти это. Если вы хотите иметь возможность приостановить весь файл foo.sh, вы должны запустить его как подпроцесс, вызывая его как команду, а не используя его.