Eu acredito que não é possível sem invocar um shell, como afirma a página de manual do csh (em parte):
repeat count command
The specified command, which is subject to the same restrictions as the command in the one line if statement above, is executed count times. ...
combinado com a descrição if
:
if ( expr ) command
... command must be a simple command, not an alias, a pipeline, a command list or a parenthesized command list, but it may have arguments.
... parece-me descartar outras opções.
Não consigo reproduzir sua falha de $ PWD no exemplo sh -c
. Dado este script no meu diretório pessoal:
$ cat ~/script.sh
#!/bin/sh
echo $0 pwd is $PWD
E uma amostra de:
$ csh
$ echo $version
tcsh 6.18.01 (Astron) 2012-02-14 (x86_64-unknown-linux) options wide,nls,dl,al,kan,rh,color,filec
$ cd /tmp
$ repeat 2 sh -c '~/script.sh; sleep 2'
/home/me/script.sh pwd is /tmp
/home/me/script.sh pwd is /tmp
... mostra o script.sh sendo executado a partir do $ PWD do shell pai.