Why do you think sh would call the csh? AFAIK sh is either a bourne shell (i.e. the mother of csh,ksh...) or an alias to bash, neither has a setenv command. You could use 'csh' to invoke the cshell or use a shebang line in your script (#!/usr/bin/csh as first line) and just call the script (without any sh or csh before it)