Quando o arquivo começa com #!/bin/csh , você diz explicitamente ao kernel para executar o script com esse programa. Mas se não houver #! no início de seu arquivo, a execução falhará - o exec () syscall falhará - e seu shell tentará executar o script usando um método ainda mais antigo, passando o arquivo diretamente para /bin/sh .
O shell Bourne, sh , implementou esse comportamento antes que #! aparecesse, e assim os scripts escritos dessa maneira esperam ser executados em sh ou pelo menos um shell compatível. csh é longe de compatível, então ele roda tais scripts em sh . Seu $ SHELL é irrelevante.
tcsh :
Because many systems use either the standard version 6 or ver- sion 7 shells whose shell scripts are not compatible with this shell, the shell uses such a 'standard' shell to execute a script whose first character is not a '#', i.e., that does not start with a comment.