As variáveis de ambiente são sempre herdadas do processo pai [†], portanto, o .cshrc precisará definir ou remover manualmente quaisquer variáveis de ambiente indesejadas
setenv PATH /bin:/other/dirs/here:/and/more
unsetenv PS1
Note que estas são operações exclusivas (para as quais o inglês "ou" infelizmente não possui especificidade booleana). setenv PATH define a variável de ambiente PATH e, em vez disso, unsetenv PS1 remove o ambiente PS1 indesejado. Fazer unsetenv PATH e, em seguida, setenv PATH ... apenas desperdiçariam ciclos da CPU. Em vez disso, simplesmente defina PATH para o que você deseja que seja. (Editar PATH é uma tarefa muito mais complicada e exigirá divisão em : e, em seguida, aplicar código para cada elemento de diretório e assim por diante ... por que todo esse problema? Defina PATH para o que ele precisa ser.)
Ou pode-se usar env -i csh para eliminar totalmente o ambiente, caso em que .cshrc deve definir melhor tudo que é necessário (várias variáveis de ambiente essenciais são definidas por login(1) ou equivalentes, como HOME e assim por diante):
$ env perl -E 'say $ENV{SHELL}'
/opt/local/bin/mksh
$ env -i perl -E 'say $ENV{SHELL}'
$
[†] Bourne shells complicam isso colocando variáveis somente shell como PS1 no mesmo namespace que o resto e então tendo um booleano (via export ) que sinaliza aquelas que são repassadas via extern char **environ aos processos filhos; veja as páginas environ(7) e execve(2) man para mais detalhes sobre o que está acontecendo sem a complicação do shell.