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.