Eu acho que o motivo é claramente que gdb usa um shell para gerar processos.
O Vim faz isso com certeza ( help ! )
:!{cmd} Execute {cmd} with the shell.
Então, quando dizemos que :!ls -l Vim executará de fato
$ SHELL -c 'ls -l'
Eu acho que (dado que eu entendi sua configuração hackish corretamente) você pode consertá-la facilmente executando exec bash -l em vez de exec bash .
A razão é que exec bash (não sendo shell de login) não alterará a variável de ambiente SHELL , que mais tarde será usada por gdb e vim e apontará para seu shell de login ( tcsh ). Eles devem usar seu shell de escolha ( bash ) diretamente.
NOTA: Você pode pensar no que acontece quando você executará algum programa escrito em tcsh . Provavelmente não se comportará como esperado.