Wenn Sie foo.sh als Quelle verwenden, stoppt Strg + Z (SUSP) einfach den aktuell ausgeführten Befehl in foo.sh und die Shell fährt munter mit dem nächsten Befehl in foo.sh fort.
Ich glaube nicht, dass es einen Ausweg gibt. Wenn Sie foo.sh vollständig aussetzen möchten, müssen Sie es als Unterprozess ausführen, indem Sie es als Befehl aufrufen und nicht als Quelle verwenden.