Não, não é possível.
A razão é que o shell lê partes do arquivo à medida que ele é executado, e um fragmento pode conter código de shell que você deseja executar em um shell diferente, mas como ele já foi lido pelo primeiro shell, o segundo shell não pode lê-lo se fosse para assumir a execução do script. (Isso pode funcionar se o shell tiver a capacidade de lseek()
do arquivo, mas as linguagens de shell não são avançadas)
No entanto, há um jeito sujo de fazer isso; zsh.
O zsh tem um comando chamado emulate
, que permite alternar entre os idiomas do shell em tempo real. Mas usar o zsh apenas para emular tcsh e bash é simplesmente sujo, para não mencionar excessivamente complexo.
.
Também eu não diria que o bash é mais moderno. É mais difundido, mas adota recursos em um ritmo muito lento. Bash é mais focado em compatibilidade do que qualquer coisa.