Este é um comportamento de shell normal que não tem nada em comum com o fato de você executá-lo a partir de C - isso acontece mesmo se você executar o shell com o script a partir da linha de comando:
$ sh ~/somescript.sh
Pode ser difícil forçar o shell a permanecer no modo interativo depois disso. Eu encontrei apenas a opção --rcfile [file]
para fazer isso:
Execute commands from file instead of the system wide initialization file
/etc/bash.bashrc
and the standard personal initialization file~/.bashrc
if the shell is interactive (see INVOCATION below).
Ou seja. você faria
$ sh --rcfile ~/somescript.sh
Mas os arquivos rc do seu sistema, como /etc/bash.bashrc
e ~/.bashrc
, não serão executados neste caso.